[백준 BOJ_2231] 분해합 Python 풀이
출처: 백준 온라인 저지
문제
풀이
우선 각 자리수의 합을 구해주는 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