최종 제출 코드
m = int(input())
# 각 자리수를 리스트화
arr = list(str(m))
# 각 자리수의 최대값은 9. 따라서 생성자가 될 수 있는 가장 작은 수는 m - m의 자리수*9
start_num = m - len(arr)*9
# 만약 start_num이 0이하의 값이 되면 1부터 검사
if start_num < 1:
start_num = 1
result = 0
for i in range(start_num, m):
# i의 각 자리수의 값을 리스트화
arr = list(map(int, str(i)))
# i의 각 자리수의 합
nums = sum(arr)
# 만약 i의 각 자리수의 합과 i 자체를 더한 값이 m(입력값)과 일치하면
# 그 i 값이 가장 작은 생성자이다
if i + nums == m:
result = i
break
print(result)
◼ 각자리의 최고 수는 9
for문의 실행 수를 줄이고 싶으면 n자리수 m은 m - n*9 가 생성자인지부터 검사하면 됨m - n*9 <= 0 인 경우는 1부터 검사해준다