Algorithm/BOJ
[백준/2231] 분해합 (with 파이썬)
Potato potage
2022. 11. 26. 21:45
반응형
✔ 문제
✔ 풀이
import sys
input = sys.stdin.readline
n = int(input())
res = 0
for i in range(1, n+1):
num = list(map(int, str(i)))
res = i + sum(num)
if res == n:
print(i)
break
if i == n:
print(0)
break
✔ 설명
예제 입력 1을 보면 216을 입력 받았는데 왜 답이 198이냐? 싶을 수 있다.
보면 198 + 1 + 9 + 8 = 216 이기 때문에 198이 216의 가장 작은 분해합이다.
따라서 n을 입력받고 1부터 n까지 for문을 돌려서 현재 i의 각 자리수 + i 를 더한 값이 n과 같다면 해당 값을 출력하면 된다.
✔ 후기
예시가 3자리 수라서 100 * a + 10 * b + c 값을 어떻게 각각 구하지..? 이러고 있었다..😂
n의 범위가 1부터 시작하기 때문에 1부터 for문을 돌리고, for문의 i의 각 자리수를 리스트로 바꿔 저장해놓고 계산하면 쉽게 풀리는 문제였던 것이다.
반응형