Problem :

https://leetcode.com/problems/happy-number/


My Solution :

class Solution:
def isHappy(self, n):
"""
:type n: int
:rtype: bool
"""
loop = set()
while n != 1:
n = sum([int(x)**2 for x in str(n)])
if n in loop:
return False
loop.add(n)
return True


Comment :

2~9까지 다 해보니까 7일때만 끝나고 나머지는 전부 4 16 37 58 89 145 42 20 loop를 도는 것을 확인하였다. 그래서 4 또는 0을 만나면 return False 하면 되기는 하는데... 그건 눈으로 확인한거고 코드로 loop 발견은 set을 활용하면 간단하다.