알고리즘

Jinsung·2022년 2월 8일
0

258. 숫자 추가

문제

음이 아닌 정수 num이 주어지면 결과가 하나의 숫자만 나올 때까지 모든 숫자를 반복적으로 더합니다.

예를 들어:

num = 38이 주어지면 프로세스는 3 + 8 = 11, 1 + 1 = 2와 같습니다. 2는 한 자리 숫자만 있으므로 반환합니다.

후속 조치: O(1) 런타임에서 루프/재귀 없이 수행할 수 있습니까?

class Solution(object):
    def addDigits(self, num):
        if num<9:
            return num
        else:
            return num - 9 * ((num-1)/9);

num - 9 * ((num-1)/9);나온이유
결과 집합은 [0...9]에만 있을 수 있고 0은 0으로만 생성할 수 있으므로 모든 양수의 결과 집합은 [1...9]이며 숫자가 증가할 때마다 10만큼 왼쪽으로 9만큼 이동하는 수를 더하는 숫자

예)9*((num-1)/9)는 9의 배수
num=38이면
38-36=2
3+8=11
1+1=2

0개의 댓글