개발이야기/PS - Problem Solving, 알고리즘
leetcode - 30-Day LeetCoding Challenge - 2. Happy Number
준호씨
2020. 4. 21. 23:52
반응형
https://leetcode.com/explore/challenge/card/30-day-leetcoding-challenge/528/week-1/3284/
숫자 n이 "happy"인지 확인하는 알고리즘을 작성하십시오.
happy number는 다음 프로세스에 의해 정의된 숫자입니다. 양의 정수로 시작하여 숫자를 제곱의 제곱의 합계로 바꾸고 숫자가 1 (있을 때) 또는 반복될 때까지 프로세스를 반복하십시오. 이 과정이 1로 끝나는 숫자가 happy number입니다.
n이 happy number이면 True, 아니면 False를 반환합니다.
Example:
Input: 19
Output: true
Explanation:
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1
숫자의 각 자릿수를 제곱하여 더한 결과가 1인지 검사하면서 계속 반복합니다.
무한 반복을 방지 하기 위해 th라는 dictionary를 만들어서 같은 값이 나오면 종료하도록 처리하였습니다.
class Solution:
def isHappy(self, n: int):
th = {}
while True:
temp = 0
for c in str(n):
temp += int(c) * int(c)
if temp == 1:
return True
n = temp
if temp in th:
return False
else:
th[temp] = 1
더 좋은 풀이 방법이 있는지 Solution을 보고 싶었으나 프리미엄 서비스를 구독해야 볼 수 있는가 보네요.
더 좋은 방법이 있는지는 좀 더 고민해 봐야겠습니다.
반응형