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부터 1까지 -1씩 작아지면서 생성자가 될 수 있는지 판단하여 result에 값을 넣어 처리했습니다
- 다른 분 코드를 보니 저처럼 for문을 쓰지 않고 m값을 map으로 한자리씩 분해하여 list에 담아 계산한 풀이도 있었습니다 근데 시간은 제가 더 빨리나와 의아했네요
- 생성자 유무는 result가 -1일때와 아닐때로 나눌때로 조건을 나누었습니다 근데 print(0)을 넣지 않고 코드를 짜고 제출했었는데 '맞았습니다'가 떠서 당황했네요
n = int(input())
result = -1
sum_value = 0
for m in range(n, 1, -1):
sum_value = m
for j in range(len(str(m))):
sum_value += int(str(m)[j])
if sum_value == n:
result = m
if result == -1:
print(0)
else:
print(result)