[leetcode] Add Digits

hotbreakb·2022년 3월 28일
0

algorithm

목록 보기
11/25
post-thumbnail

Add Digits

나의 접근법

값을 더하면서 한 자리수가 나올 때까지 돌려고 했다. 만약 숫자가 230(대략 1,000,000,000)이면 시간초과가 날 수밖에 없다. 힌트에 O(1)로 풀어보라고 해서 이게 되나? 싶었다.

다른 사람 풀이

각 자리수를 더하는 문제를 풀 때는 합쳐서 9가 되는지 확인해보면 좋다는 이야기를 들은 적이 있다. 이 문제를 풀 때는 왜 기억을 못 했는지🫡

num89101112131415161718
sum89123456789
  1. 10보다 작은 수는 한 자리수이기 때문에 입력값이 리턴값이 된다.
  2. 9의 배수는 각 자리를 더하면 9가 된다. (예: 18, 27, 36, 45, 54)
  3. 9의 배수가 아닌 수는 그 수를 9로 나눈 값이 리턴값이 된다.

코드

class Solution:
    def addDigits(self, num: int) -> int:
        if num < 10: return num
        if num % 9 == 0: return 9
        return num % 9

참고 자료

Timothy H Chang

profile
글쟁이 프론트 개발자, 헬렌입니다.

0개의 댓글