본문 바로가기

코딩테스트/Python

[Python] 백준 #2231 - 분해합

https://www.acmicpc.net/problem/2231

 

2231번: 분해합

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이

www.acmicpc.net


풀이

n = int(input())
cnt=0
while True:
    cnt+=1
    if sum(list(map(int,str(cnt))))+cnt == n:
        print(cnt)
        break
    if cnt==n: 
        print(0)
        break

 

cnt를 1부터 n까지 돌리면서 모든 경우의 수를 구해야한다.

cnt의 모든 자리수의 합 + cnt 를 구해야하기때문에 cnt를 먼저 문자열로 바꿔준 후 이것을 한 글자씩 숫자로 바꾸면서 리스트로 넣어주었다.

그리고 그 리스트의 합이 n과 같은지 비교하였다.

같으면 cnt를 출력해준다.