https://www.acmicpc.net/problem/2231
n = int(input())
result = 0
for i in range(1, n+1):
nums = list(map(int, str(i)))
result = sum(nums) + i
if result == n:
print(i)
break
if i == n:
print(0)
어떠한 수 m과 m의 각 자리 수의 합이 입력 받은 n이 되어야한다. 이때, m은 n의 분해합이 된다.
1부터 입력받은 수까지 for문을 이용해 각 자리 수의 합과 자기자신을 더했을 때 n이 되는 값을 출력하게 했다. 이때, 가장 작은 분해합을 출력해야 하므로 첫 번째 if문에 걸리면 바로 끝날 수 있게 break문을 사용해주었다.
nums = list(map(int, str(i)) 이 코드는 각 자리의 수를 나눠서 리스트에 값을 넣어준다.
'Algorithm > Problems' 카테고리의 다른 글
[백준/파이썬] 1018번 체스판 다시 칠하기 (0) | 2022.11.14 |
---|---|
[백준/파이썬] 7568번 덩치 (2) | 2022.11.14 |
[백준/파이썬] 2798번 블랙잭 (0) | 2022.11.10 |
[백준/파이썬] 25501번 재귀의 귀재 (0) | 2022.11.09 |
[백준/파이썬] 18870번 좌표 압축 (0) | 2022.11.09 |