n = int(input())
for i in range(1, n + 1):
a = list(str(i))
if i + sum(map(int, a)) == n:
print(i)
break
if i == n:
print(0)
코드 설명
반복문은 1부터 n 까지 진행한다. 입력을 받을때 숫자를 분해시켜 저장하기 위해 str() 로 변환후 list() 함수를 이용한다.
만약 본래의 숫자 + 분해시켜 저장한 숫자의 합이 n 과 같다면 그 수를 출력시키고 종료한다.
마지막 반복인 i == n 이 될 경우에는 생성자가 없으므로 0을 출력한다.
Point : 숫자를 분해하는 작업을 위해 list 형으로의 변환이 필요하다. 또한 1부터 반복되기에 조건을 만족하면 그것이 바로 가장 작은 생성자가 된다.
728x90
'SW개발 > 코딩테스트' 카테고리의 다른 글
[백준]1018번 체스판 다시 칠하기 - 완전 탐색 (0) | 2021.02.23 |
---|---|
[백준]7568번 덩치 - 완전 탐색 (0) | 2021.02.22 |
[백준]2798번 블랙잭 - 완전 탐색 (0) | 2021.02.20 |
[백준]12865번 평범한 배낭 - DP (0) | 2021.02.19 |
[백준]1912번 연속합 - DP (0) | 2021.02.18 |