[Algorithm] [백준] 2231

myeonji·2022년 3월 1일
0

Algorithm

목록 보기
55/89
# 백준 2231 분해합

import sys
input = sys.stdin.readline

# 1. for문을 통해 n 까지 돌기
# 2. i 와 i의 각 자리수의 합을 구해야 한다.
# 3. i의 각 자리수의 합은 str 함수를 이용하여 list에 넣기
# 4. i + i의 각 자리수의 합이 n 이 되면 그때의 i 출력하기 (가장 작은 생성자)
# 5. for문이 끝날 때까지 n 과 같은 값이 나오지 않으면 0 출력

n = int(input())

for i in range(1, n+1):  # 1
    lst = list(map(int, str(i)))  # 2, 3

    if i+sum(lst) == n:  # 4
        print(i)
        break
else:  # 5
    print(0)

i + i의 각 자리수의 합 을 구해야 한다.

🚩 i의 각 자리수의 합을 구하는 부분
n = 100 일 때,
lst = list(map(int, str(i))) 결과는

[1] [2] [3] [4] [5] [6] [7] [8] [9] [1, 0] [1, 1] [1, 2] [1, 3] [1, 4] [1, 5] [1, 6] [1, 7] [1, 8] [1, 9] [2, 0] [2, 1] [2, 2] [2, 3] [2, 4] [2, 5] [2, 6] [2, 7] [2, 8] [2, 9] [3, 0] [3, 1] [3, 2] [3, 3] [3, 4] [3, 5] [3, 6] [3, 7] [3, 8] [3, 9] [4, 0] [4, 1] [4, 2] [4, 3] [4, 4] [4, 5] [4, 6] [4, 7] [4, 8] [4, 9] [5, 0] [5, 1] [5, 2] [5, 3] [5, 4] [5, 5] [5, 6] [5, 7] [5, 8] [5, 9] [6, 0] [6, 1] [6, 2] [6, 3] [6, 4] [6, 5] [6, 6] [6, 7] [6, 8] [6, 9] [7, 0] [7, 1] [7, 2] [7, 3] [7, 4] [7, 5] [7, 6] [7, 7] [7, 8] [7, 9] [8, 0] [8, 1] [8, 2] [8, 3] [8, 4] [8, 5] [8, 6] [8, 7] [8, 8] [8, 9] [9, 0] [9, 1] [9, 2] [9, 3] [9, 4] [9, 5] [9, 6] [9, 7] [9, 8] [9, 9] [1, 0, 0]
이다. 1~100 까지 각 자리수가 분리되어 list에 담긴다.
여기서 i 는 str 형으로 만들어야 분리할 수 있다.

0개의 댓글