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해서 출력한다.