Notice
Recent Posts
Recent Comments
준호씨의 블로그
leetcode - 30-Day LeetCoding Challenge - 2. Happy Number 본문
개발이야기/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을 보고 싶었으나 프리미엄 서비스를 구독해야 볼 수 있는가 보네요.
더 좋은 방법이 있는지는 좀 더 고민해 봐야겠습니다.
반응형
'개발이야기 > PS - Problem Solving, 알고리즘' 카테고리의 다른 글
hackerrank - Staircase - Python3 (0) | 2020.04.24 |
---|---|
leetcode - 30-Day LeetCoding Challenge - 3. Maximum Subarray (0) | 2020.04.22 |
leetcode - 30-Day LeetCoding Challenge - 1. Single Number (0) | 2020.04.20 |
Google Code Jam 2020 QR 1 Vestigium 풀이 (0) | 2020.04.08 |
Google Code Jam 2020 Qualification Round 종료! Round 1A는 6일 후 (0) | 2020.04.05 |
Comments