Algorithm/Problems

[백준/파이썬] 2231번 분해합

공부좀하시졍 2022. 11. 10. 14:13

https://www.acmicpc.net/problem/2231

 

2231번: 분해합

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이

www.acmicpc.net

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)) 이 코드는 각 자리의 수를 나눠서 리스트에 값을 넣어준다.