본문 바로가기
백준

[백준] 2231번 : 분해합 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 13.
728x90
반응형

 

 

2231번: 분해합

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

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. 생성자를 구할 자연수를 입력받는다. N = int(sys.stdin.readline())
  3. 생성자를 저장할 변수를 생성하고 생성자를 찾지 못했을 경우 값으로 초기화한다. answer = 0
  4. 입력받은 수까지 반복하며 생성자를 찾는다. for i in range(N)
  5. 각 자릿수를 저장하기 위해 값을 변수에 저장해 둔다. num = i
  6. 합을 저장할 변수를 생성하고 값을 대입한다. Sum = num
  7. 따로 저장해 둔 값이 0이 될 때까지 반복하며 while (num != 0)
  8. 값을 10으로 나눈 나머지를 더한다. Sum += num % 10
  9. 값을 10으로 나눈 몫을 새로 저장한다. num //= 10
  10. 합을 구했으면 입력한 자연수와 일치한 지 판별하고 if (Sum == N)
  11. 일치하면 생성자이므로 답에 저장한다. answer = i
  12. 가장 작은 생성자를 구하는 문제이므로 가장 먼저 찾은 생성자의 값이 가장 작은 생성자이다. 따라서 가장 작은 생성자를 찾았으므로 종료한다. break
  13. 정답을 출력한다. print(answer)
반응형

3. 소스코드

import sys

N = int(sys.stdin.readline())

answer = 0
for i in range(N):
    num = i
    Sum = num
    while (num != 0):
        Sum += num % 10
        num //= 10
    
    if (Sum == N):
        answer = i
        break

print(answer)
728x90
반응형