Baekjoon/단계별로 풀어보기

[백준][12단계 브루트 포스] 2231번 / 분해합 (파이썬/Python)

junslee 2025. 6. 17. 17:33

1. 문제 설명

2. 코드

N = int(input())
result = 0

for i in range(1,N):
    total = i
    temp = i
    while temp > 0:
        total += temp % 10
        temp //= 10
    if total == N:
        result = i
        break
print(result)

3. 풀이 과정

가장 작은 생성자를 구하는 것은 N보다 작은 모두 자연수를 분해합을 진행해야 한다.

그 과정을 조금이나마 단축시키기 위해 1부터 분해합을 진행해서 N과 같은 값이 나오면 break를 하도록 한다.

분해합을 진행하기 위해서는 각 자릿수를 더하는 과정이 있어야 한다.

while temp > 0으로 몇 자리의 수가 N에 올지 모르니 while 반복문을 작성한다.

temp % 10으로 일의 자리 부터 total에 더해준다.

이후 temp //= 10으로 다음 자릿수로 이동한다.

최종적으로는 0이 나올 수 밖에 없으므로 모든 자릿수를 더하게 된다.

이후 total이 N과 같아지면 그 값이 result가 되고 break해서 출력한다.