감자튀김 공장🍟

[백준/2231] 분해합 (with 파이썬) 본문

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의 각 자리수를 리스트로 바꿔 저장해놓고 계산하면 쉽게 풀리는 문제였던 것이다. 

반응형
Comments