[백준]2231번 분해합 - 완전 탐색
SW개발/코딩테스트

[백준]2231번 분해합 - 완전 탐색

 

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