반응형
파이썬 / BOJ 백준 / 2231 분해합 - 브루트포스
https://www.acmicpc.net/problem/2231
문제
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다.
자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오.
풀이
1. 이 문제는 브루트포스 알고리즘으로 풀 수 있는 문제입니다. 즉, 모든 경우의 수를 확인해야 합니다.
2. 1부터 N+1까지의 모든 경우의 수를 비교합니다.
3. For문의 i를 string으로 입력 받아, int 형으로 바꿔 각 자리의 수의 합을 구하고, i와 각 자리의 수의 합을 더 합니다.
4. 이 합이 입력한 값과 동일하면 For 문을 종료시키고 답을 출력합니다.
전체 코드
N = int(input())
result = 0
for i in range(1, N+1):
a = list(map(int, str(i)))
s = i + sum(a)
if(s == N):
result = i
break
print(result)
반응형
'BOJ 백준 알고리즘 > 브루트 포스' 카테고리의 다른 글
파이썬 / BOJ 백준 / 1018 체스판 다시 칠하기 - 브루트포스 (0) | 2021.09.30 |
---|---|
파이썬 / BOJ 백준 / 7568 덩치 - 브루트포스 (0) | 2021.09.29 |
파이썬 / BOJ 백준 / 2798 블랙잭 - 브루트포스 (0) | 2021.09.27 |
파이썬 / BOJ 백준 알고리즘 / 1476번 날짜 계산 - 브루트 포스 (0) | 2020.10.23 |
파이썬 / BOJ 백준 알고리즘 / 2309번 일곱 난쟁이 - 브루트 포스 (0) | 2020.10.22 |