본문 바로가기

Algorithm/Brute-force

[Python] 백준 2231번 : 분해합 (B2) - 브루트포스단계별2

#문제

www.acmicpc.net/problem/2231

 

2231번: 분해합

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

www.acmicpc.net

#풀이 & 학습한 내용

"모든 경우를 시도하여 N의 생성자를 구하는 문제"입니다. 이때 각 자릿수의 합을 아래 코드의 6번 줄과 같이 문자열로의 변환과 리스트 컴프리헨션을 이용해서 쉽게 구할 수 있습니다.

 

#소스코드(6번째 줄 주목)

1
2
3
4
5
6
7
8
9
10
11
12
= int(input())
ans=0 #생성자가 없을 시 답은 0
 
for num in range(N):
  #리스트 컴프리헨션으로 각 자릿수의 합 구하는 법
  now_num = num + sum([int(i) for i in str(num)])
  if now_num == N: #생성자가 존재할 때
    ans=num
    break
 
print(ans)
 
cs

 

github.com/HoYoungChun/Algorithm_PS/blob/master/Brute-force/BOJ_2231.py

 

HoYoungChun/Algorithm_PS

Baekjoon Online Judge, Programmers problem solving by Python, C++ - HoYoungChun/Algorithm_PS

github.com