본문 바로가기
Leetcode

[LeetCode] Add Digits 파이썬

by YGSEO 2021. 4. 11.
728x90
class Solution:
    def addDigits(self, num: int) -> int:
        if num < 10:
            return num
        len_num = float("inf")
        while len_num >= 2:
        
            num = list(str(num))
            # print(num)
            num=sum([int(x) for x in num])
            # print(num)
            len_num = len(list(str(num)))
        return num

['3', '8']
11
['1', '1']
2

 

아무래도 list로 만들고 다시 sum으로 list comprehension을 수행하는게 비효율적인 과정이라서 속도가 느린편으로 나왔다.


다른 풀이

class Solution:
    def addDigits(self, num: int) -> int:
        while num >= 10:
            res = 0
            while num:
                res += num % 10
                num //= 10
                #print(num, res)
            num = res
            
        return num

# print output
# 3 8
# 0 11
# 1 1
# 0 2

2번째 while 문에서 res에 나머지를 계속 더해주는게 초점이다.

그러면 결국 한자리수가 될때까지 res에 더해주는 것이 된다.

첫 번째 while 문에서는 res를 0으로 초기설정해주는 것이다.

 

두번재 while문을 빠져나올때에는(한자리수가 되었을 경우)

여태까지 계산했던 res를 num으로 설정해주고

return.

728x90

댓글