어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다.
자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오.
216
198
256
245
8
4
1
0
n = int(input()) # 숫자 입력
size = len(str(n)) # 숫자의 자릿수 확인
if n > 9 * size: # 각 자릿수들의 합의 최댓값을 뺀다
t = n - (9 * size)
else: # (9*자릿수)보다 작으면 반으로 나눔
t = n // 2
while t < n: # t가 n과 같아질 때 까지 반복
individual = 0 # 각 자릿수의 합을 담을 변수
for x in str(t): # 각 자릿수의 합 더한다.
individual += int(x)
if t + individual == n: # t와 각 자릿수의 합이 n과 같으면 빠져나감
break
t += 1 # t값을 1 키워 다시 시도
if t == n: # t가 n과 같으면 분해합이 존재하지 않음
print(0)
else: # 분해합 출력
print(t)