알고리즘 문제 풀이: 파이썬/BOJ

[BOJ_2231] 분해합

hueco 2021. 9. 24.

문제 링크: https://www.acmicpc.net/problem/2231

 

2231번: 분해합

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

www.acmicpc.net

내 풀이:

참고용 풀이:

Review:

 내 풀이에서는 분해합에 대한 모든 생성자를 구해서 리스트 nums에 저장하고, 내장 함수 min()을 이용해 가장 작은 생성자를 출력하고, 생성자 없다면 0을 출력해서 문제를 해결했다.

 참고용 풀이에서는 모든 생성자를 구하지 않고, 분해합을 만드는 생성자가 구해지면 반복을 종료해 불필요한 계산을 줄였다.

그리고 생성자가 없는 경우를 처리하기 위해 변수 answer에 미리 0을 할당했고, 각 자릿수를 구하는 과정도 참고용 풀이가 좀 더 이해하기 쉬운 코드 같다.

 

Idea:

 분해합을 만드는 생성자를 구하는 문제이다. 분해합을 구하기 위해 각 자릿수의 합을 구하는 부분만 처리하면 어렵지 않은 문제이다.

 

'알고리즘 문제 풀이: 파이썬 > BOJ' 카테고리의 다른 글

[BOJ_2822] 점수 계산  (0) 2021.10.12
[BOJ_15829] Hashing  (0) 2021.09.24
[BOJ_17413] 단어 뒤집기 2  (0) 2021.09.24
[BOJ_5397] 키로거  (0) 2021.09.22
[BOJ_1966] 프린터 큐  (0) 2021.09.22

댓글