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
'Leetcode' 카테고리의 다른 글
[LeetCode] Missing Number 파이썬 (0) | 2021.04.12 |
---|---|
[LeetCode] Ugly Number 파이썬 (0) | 2021.04.11 |
[LeetCode] Binary Tree Paths 파이썬 (Binary Tree, LCA, DFS) (0) | 2021.04.07 |
[LeetCode] Valid Anagram 파이썬 (dict) (0) | 2021.04.07 |
[LeetCode] Delete Node in a Linked List 파이썬 (linked list) (0) | 2021.04.07 |
댓글