본문 바로가기

[ leetcode ]

202. Happy Number

반응형
SMALL

양수 n이 있다. n에 들어있는 각 숫자의 제곱을 더해서 1이나오면 True를 리턴한다. 서클이되거나 끝없는 루프를 돌게 되면 False를 리턴한다.

 


 

solution 1.

무한 루프를 돌게 하고 그 안에서 합이 n이 되게 계속 반복한다. 그리고 내부에 n의 각 부분을 하나씩 돌면서 합을 찾고 합이 1이면 True를 리턴한다. 서클을 찾는 방법도 넣어야한다. 그 방법은 같은 숫자가 다시 돌아오면 서클이라고 할 수 있기 때문에 메모제이션을 활용하여 딕셔너리에 해당 값이 다시 들어온다면 False로 리턴한다.

 

class Solution:
    def isHappy(self, n: int) -> bool:
        ck = collections.defaultdict(int)
        while True:
            if ck[n]:
                return False
            else:
                ck[n] = 1
            n = str(n)
            sum_ = 0
            for i in range(len(n)):
                sum_ += int(n[i])**2
            if sum_ == 1:
                return True
            n = sum_

 

 

반응형
LIST

'[ leetcode ]' 카테고리의 다른 글

217. Contains Duplicate  (0) 2023.01.17
160. Intersection of Two Linked Lists  (0) 2023.01.03
141. Linked List Cycle  (0) 2023.01.01
118. Pascal's Triangle  (0) 2022.12.27
101. Symmetric Tree  (0) 2022.12.20