반응형
Notice
Recent Posts
Recent Comments
- Today
- Total
작심삼일
[LeetCode] 258 | Add Digits | Python 본문
728x90
반응형
문제 링크: https://leetcode.com/problems/add-digits/
문제
Given an integer num, repeatedly add all its digits until the result has only one digit, and return it.
조건
- 0 <= num <= $2^{31}$ - 1
내 풀이
처음에는 단순하게 recursion을 사용해서 1)처럼 풀었다.
num의 각 자리수를 더한 후, 그 합이 한자리 수가 아니면 이를 반복하는 형식이다.
그런데 follow up에 'Could you do it without any loop/recursion in O(1) runtime?'라고 써있어서 도전해봤다.
이 방법은 위의 방법에서 조금 발전한 것이다.
num의 각 자리수를 더할 때, 그 순간의 합이 한자리 수가 아니면 더하는 방식이다.
ex) 472 $\rightarrow$ (4+7) + 2 $\rightarrow$ (11) + 2 $\rightarrow$ (1+1) + 2 $\rightarrow$ (2) + 2 $\rightarrow$ 4
코드
1) recursion 사용해서 단순하게
class Solution:
def addDigits(self, num: int) -> int:
while len(str(num)) > 1:
t_num = 0
for n in str(num):
t_num += int(n)
num = t_num
return num
2) recursion 사용하지 않고 O(1)만에
class Solution:
def addDigits(self, num: int) -> int:
if num > 9:
t_num = 0
for n in str(num):
t_num += int(n)
if t_num > 9:
t_num = t_num%10 + t_num//10
num = t_num
return num
728x90
반응형
'스터디 > 코테' 카테고리의 다른 글
[LeetCode] 560 | Subarray Sum Equals K | Python (0) | 2022.02.10 |
---|---|
[LeetCode] 532 | K-diff Pairs in an Array | Python (0) | 2022.02.09 |
[백준] 4179번 | 불 | Python (0) | 2022.02.07 |
[LeetCode] 389 | Find the Difference | Python (0) | 2022.02.07 |
[LeetCode] 525 | Contigous Array | Python (0) | 2022.02.04 |
Comments