LeetCode/Top Interview 150

202. Happy Number

hyunkookim 2024. 12. 1. 17:37

202. Happy Number

 

https://youtu.be/ljz85bxOYJ0?si=0jgqxJfkCYKkgVEL

 

class Solution:
    def isHappy(self, n: int) -> bool:
        # 이미 방문한 숫자를 저장할 집합 (무한 루프를 방지하기 위함)
        visit = set()
        
        # 숫자가 이미 visit에 없으면 계속 반복
        while n not in visit:
            visit.add(n)  # 현재 숫자를 방문한 것으로 표시
            n = self.sumOfSquares(n)  # 현재 숫자의 각 자릿수 제곱합으로 갱신
            
            # 숫자가 1이면 행복한 수이므로 True 반환
            if n == 1:
                return True
        
        # n이 visit에 이미 있다면, 무한 루프에 빠진 상태이므로 False 반환
        return False

    def sumOfSquares(self, n: int) -> int:
        # 숫자의 각 자릿수 제곱합을 계산
        output = 0
        while n:
            digit = n % 10  # 현재 숫자의 마지막 자리 숫자
            digit = digit ** 2  # 해당 자리 숫자를 제곱
            output += digit  # 제곱 값을 합산
            n = n // 10  # 숫자를 10으로 나누어 자릿수를 줄임
        return output

'LeetCode > Top Interview 150' 카테고리의 다른 글

73. Set Matrix Zeroes  (0) 2024.12.02
219. Contains Duplicate II  (0) 2024.12.01
Hashmap: 1. Two Sum ★  (1) 2024.12.01
290. Word Pattern  (0) 2024.11.30
205. Isomorphic Strings  (1) 2024.11.30