[백준 BOJ_2231] 분해합 Python 풀이

출처: 백준 온라인 저지

문제

BOJ_2231

풀이

우선 각 자리수의 합을 구해주는 decompose 함수를 재귀호출로 만들어주었습니다.

N을 10으로 나누었을 때의 나머지값을 더해주며 N을 10으로 나눈 값으로 재귀호출해줍니다. 더 이상 10으로 나누지 못할 때는 N이 한 자릿수임을 뜻하니 N을 반환해줍니다.

for loop을 돌려 자신과 각 자리수의 합이 N이 나오는 최솟값을 구해야 하기 때문에
숫자를 발견 즉시 저장해준 뒤 loop를 break 해줍니다.

코드

def decompose(n):
    if n // 10 == 0:
        return n
    return n % 10 + decompose(n // 10)

N = int(input())
ans = 0
for i in range(N):
    if i + decompose(i) == N:
        ans = i
        break
print(ans)

Leave a comment