2231번: 분해합
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이
www.acmicpc.net
아이디어:
N<=10^6 이므로, 1~N까지 모두 탐색해도 시간 내에 문제를 해결할 수 있다.
for (1~N) 을 돌면서, 분해합이 N이 되면 해당 숫자를 출력하고, 분해합이 N이 되는 경우가 없으면 0을 출력한다.
코드:
자리수를 추출하여 더하는 로직을 잘 알아두자.
while 문을 이용하여 깔끔하게 구현할 수 있다.
import sys
n = int(sys.stdin.readline())
ans = 0
for i in range(1, n):
temp = i
sum = i
#자리수 추출하여 더하기
while (temp>0):
sum += temp %10
temp //= 10
if (sum==n):
ans = i
break
print(ans)
'알고리즘💻 > Bruteforce&Backtracking' 카테고리의 다른 글
BOJ 15663번: N과 M(9) (0) | 2021.01.17 |
---|---|
BOJ 9663번: N-Queen (0) | 2021.01.16 |
BOJ 15650번: N과 M(2) (0) | 2021.01.16 |
BOJ 15649번: N과 M(1) (0) | 2021.01.16 |
BOJ 1018번: 체스판 다시 칠하기 (0) | 2021.01.16 |