본문 바로가기
개발/알고리즘

[leetcode] week1 - Happy Number

by ny0011 2020. 4. 11.
반응형

 

https://leetcode.com/explore/challenge/card/30-day-leetcoding-challenge/528/week-1/3284/

 

Explore - LeetCode

LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore.

leetcode.com

[잘못된] 풀이

1. 각 자리수의 합을 구한다.

2. 각 자리수의 합의 길이가 1이하일 때까지 계속 돌린다

3. 각 자리수의 합이 1이면 true, 아니면 false

-> 실패ㅠ

- 각 자리수의 합의 길이가 1일 때도 제곱을 해야하는지 몰랐음.

- 각 자리수의 합이 순환되는지도 몰랐음

 

풀이

1. 각 자리수의 합을 구한다.

2. 합을 리스트에 저장한다.

3. 각 자리수의 합이 1이면 true, 리스트에 저장된 적이 있으면 false, 아니면 다시 합을 구한다.

 

def sum_digit(number):
    return sum([int(i)**2 for i in str(number)])

class Solution:
    def isHappy(self, n: int) -> bool:
        seen = set()
        num = sum_digit(n)
        while True:
            num = sum_digit(num)
            if num == 1:
                return True
            elif num in seen:
                return False
            else:
                seen.add(num)

 

대략 중간컷

 

 

 

'개발 > 알고리즘' 카테고리의 다른 글

파이썬 알고리즘 꿀팁  (0) 2020.12.09
[leetcode] week1 - Move Zeroes  (0) 2020.04.13
[leetcode] week1 - Maximum Subarray  (0) 2020.04.12
[leetcode] week1 - single number  (0) 2020.04.10
[프로그래머스] K번째 수  (0) 2020.04.08

댓글