https://leetcode.com/problems/happy-number/
생각
leetcode에서 같은 easy라도 난이도가 천차만별인것같다. 근데 이 문제는 가볍게 풀려서 정말 행복한 문제
주어진 예시에서 n=19일때를 모두 손으로 써보면 1이 되므로 True임을 알 수 있다. 그렇다면, 언제 False가 되는지를 알아야 한다.
n=2 일때를 계속 써보면 2, 4 , 16 , 37, 30, 9, 81, 65, 61, 37(싸이클 발생!) 이미 갔던곳을 다시 방문하면 절대 해피 넘버가 될 수 없다.
따라서, set() 으로 방문처리를 체크하여 문제를 풀었다.
Python Code
class Solution:
def isHappy(self, n: int) -> bool:
visited = set()
while True:
ret = 0
for x in str(n):
visited.add(int(x))
ret += int(x)*int(x)
if ret == 1:
return True
if ret in visited:
return False
n = ret
'Algorithm' 카테고리의 다른 글
[LeetCode] Python - 102. Binary Tree Level Order Traversal (0) | 2021.07.04 |
---|---|
[LeetCode] Python - 230. Kth Smallest Element in a BST (0) | 2021.07.03 |
[LeetCode] Python - 289. Game of Life (0) | 2021.07.02 |
[LeetCode] Python - 937. Reorder Data in Log Files (0) | 2021.07.01 |
[LeetCode] Python - 198. House Robber (0) | 2021.06.30 |