호프 2021. 1. 16. 21:20

www.acmicpc.net/problem/2231

 

2231번: 분해합

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

www.acmicpc.net

아이디어:

N<=10^6 이므로, 1~N까지 모두 탐색해도 시간 내에 문제를 해결할 수 있다.

for (1~N) 을 돌면서, 분해합이 N이 되면 해당 숫자를 출력하고, 분해합이 N이 되는 경우가 없으면 0을 출력한다.

 

코드:

자리수를 추출하여 더하는 로직을 잘 알아두자.

while 문을 이용하여 깔끔하게 구현할 수 있다.

import sys
n = int(sys.stdin.readline())
ans = 0
for i in range(1, n):
    temp = i
    sum = i
    #자리수 추출하여 더하기
    while (temp>0):
        sum += temp %10
        temp //= 10
        
    if (sum==n):
        ans = i
        break
print(ans)
댓글수0