문제
https://www.acmicpc.net/problem/2231
2231번: 분해합
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이
www.acmicpc.net
풀이
- 브루트포스 알고리즘
1부터 시작해서 n까지의 분해합을 모두 구해서 n과 처음 같아질 때, 그 때가 가장 작은 생성자가 된다.
처음 문제를 풀 때, 반복문의 범위를 range(1, n)까지했더니 반례 1에서 걸려 오답처리가 됐다.
입력값이 한 자리 수 일때까지 생각해서 풀어야 한다.
코드
n = int(input())
for i in range(1,n+1):
arr = list(map(int, str(i)))
if sum(arr) + i == n:
print(i)
break
if i == (n):
print(0)
break
'코딩테스트 > BOJ' 카테고리의 다른 글
[백준/파이썬] 10816번: 숫자 카드 2 (Python) (0) | 2021.06.23 |
---|---|
[백준/파이썬] 11650번: 좌표 정렬하기 (Python) (0) | 2021.06.23 |
[백준/파이썬] 10814번: 나이순 정렬 (Python) (0) | 2021.06.23 |
[백준/파이썬] 1373번: 2진수 8진수 (Python) (0) | 2021.06.20 |