n = int(input())
for i in range(1, n+1): # 해당 분해합의 생성자 찾기
num = sum((map(int, str(i)))) # i의 각 자릿수를 더함
num_sum = i + num # 분해합 = 생성자 + 각 자릿수의 합
# i가 작은 수부터 차례로 들어가므로 처음으로 분해합과 입력값이 같을때가 가장 작은 생성자를 가짐
if num_sum == n:
print(i)
break
if i == n: # 생성자 i와 입력값이 같다는 것은 생성자가 없다는 뜻
print(0)
import sys
input=sys.stdin.readline
n=int(input())
res=0
for i in range(1, n+1):
sum=0
k=i
for j in range(len(str(i))):
sum+=k%10
k//=10
if sum+i==n:
res=i
break
print(res)
import sys
input=sys.stdin.readline
n=int(input())
i=1
k=0
while True:
k=sum(list(map(int, str(i))))
print(i, k, i+k)
if i+k==n:
print(i)
break
elif i+k>n: #수정->elif i+k==n:
print(0)
break
i+=1
가장 먼저 위와 같이 풀었는데, 이 경우 15 와 같은 경우가 틀리게 됨.
7+7=14, 8+8=16에서 15보다 커지므로 반복문이 종료되는데, 12+1+2 ==15 인 경우가 있으므로 n까지 반복문을 돌려줘야함. elif i+k==n:
로 수정하면 맞음.
def find():
a = int(input())
for n in range(1, a):
if n+sum(map(int, list(str(n)))) == a:
return n
return 0
print(find())
num = int(input())
n_lst = []
rng = num - 9*len(str(num))
if rng < 1 : rng = 1
ans = 0
for i in range(rng,num) :
m_num = i + sum(map(int,str(i)))
if m_num == num :
ans = i
break
print(ans)