Skip to content

Commit a971da6

Browse files
committed
solution: 0202. Happy Number
1 parent 29afba8 commit a971da6

File tree

1 file changed

+35
-1
lines changed

1 file changed

+35
-1
lines changed

solutions/solution_0202/__init__.py

+35-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,36 @@
11
class Solution:
2-
def isHappy(self, n: int) -> bool: ...
2+
def isHappy(self, n: int) -> bool:
3+
current_number = n
4+
checked_numbers = {}
5+
6+
while True:
7+
number_sum = 0
8+
for i in str(current_number):
9+
number_sum += int(i) ** 2
10+
11+
if number_sum == 1:
12+
return True
13+
14+
if number_sum in checked_numbers:
15+
return False
16+
17+
checked_numbers[number_sum] = True
18+
current_number = number_sum
19+
20+
21+
"""풀이 설명
22+
이 문제는 주어진 숫자가 '행복한 숫자'인지 판별하는 문제입니다. 행복한 숫자는 다음과 같은 규칙을 따릅니다.
23+
1. 주어진 숫자의 각 자리수를 제곱한 값을 더합니다.
24+
2. 위의 과정을 반복합니다.
25+
3. 숫자가 1이 될 때까지 반복합니다.
26+
4. 숫자가 1이면 '행복한 숫자'이고, 1이 아니면 '행복한 숫자'가 아닙니다.
27+
5. 숫자가 1이 아니더라도 반복되는 숫자가 있으면 '행복한 숫자'가 아닙니다.
28+
29+
대략적인 풀이 방법은 다음과 같습니다.
30+
1. 주어진 숫자를 변수에 저장합니다.
31+
2. 반복문을 돌면서 각 자리수를 제곱한 값을 더합니다.
32+
3. 더한 값이 1이면 '행복한 숫자'이므로 True를 반환합니다.
33+
4. 더한 값이 이미 확인한 숫자라면 False를 반환합니다.
34+
5. 더한 값이 1이 아니라면 확인한 숫자로 추가하고 다시 반복합니다.
35+
6. 결과를 반환합니다.
36+
"""

0 commit comments

Comments
 (0)