• 방법 1. 틀렸습니다..
n = int(input())
for i in range(1, n+1):
nums = list(map(int, str(i))) # 반복시 초기화 되어야 함
cons = i + sum(nums) # 분해합 = 생성자 + 각자릿수
if cons == n:
print(i)
break
# 반례: 1, 1의 경우 생성자가 존재하지 않아
# 이 코드의 경우 출력값이 존재하지 않은 상태로 for문을 탈출하고 코드가 종료된다.
• 방법 2. 맞았습니다!!
n = int(input())
result = 0
for i in range(1, n+1):
nums = list(map(int, str(i))) # 반복시 초기화 되어야 함
cons = i + sum(nums) # 분해합 = 생성자 + 각자릿수
if cons == n:
result = i
break
print(result)
# 1의 경우 생성자가 존재하지 않아 result의 초기값 0이 출력된다.
• 방법 1.의 경우 반례가 존재한다.
n으로 1을 넣어보면 생성자가 존재하지 않아 출력값이 존재하지 않은 상태로 for문을 탈출하고 코드가 종료된다.
• 방법 2.의 경우 n으로 1을 넣어 생성자가 존재하지 않아도 result의 초기값인 0이 정상적으로 출력된다.