[문제]
https://www.acmicpc.net/problem/2231
[풀이]
분해합은 n과 n을 이루는 각 자릿수의 합을 구해야 하는데 N을 이루는 각 자릿수의 합을 구하는 부분을 브루스 포스 알고리즘으로 풀어야겠다고 생각했다.
1부터 n+1까지 반복문을 돈다. str함수를 통해 i를 자리수마다 쪼개 리스트 A에 넣는다.
숫자 전체인 i와 자리수의 합인 sum(A)를 더해 res 변수에 넣는다.
만약 res가 n과 같다면 i값을 출력하고 break문을 통해 반복문을 탈출한다.
만약 i가 n일 때 까지 반복문에서 탈출하지 못했다면 생성자가 없는 경우이기 때문에 "0"을 출력한다.
이번 문제의 핵심은 아래 부분인 것 같다.
A = list(map(int, str(i)))
[코드]
import sys
if __name__ == '__main__':
n = int(sys.stdin.readline())
for i in range(1, n+1):
A = list(map(int, str(i)))
res = i + sum(A)
if res == n:
print(i)
break
if i == n:
print(0)
'문제풀이 > BOJ' 카테고리의 다른 글
[Python] BOJ/백준 11651번 좌표 정렬하기 2 (0) | 2021.08.05 |
---|---|
[Python] BOJ/백준 1436번 영화감독 숌 (0) | 2021.08.03 |
[Python] BOJ/백준 1874번 스택 수열 (0) | 2021.07.30 |
[Python] BOJ/백준 10816번 숫자 카드 2 (2) | 2021.07.28 |
[Python] BOJ/백준 1237번 정ㅋ벅ㅋ (0) | 2021.07.28 |