본문 바로가기
백준 알고리즘

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

by 웅대 2023. 2. 9.
728x90
반응형

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

 

2231번: 분해합

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

www.acmicpc.net

 

1. 길이가 N+1이고 모든 값이 0인 리스트 생성 ( li [ i ]의 값은 i의 생성자가 됨 )

 

2. 반복문으로 1부터 N까지 3번 과정을 반복.

 

3. 분해 합을 구하고 리스트의 해당 인덱스 값이 0일 때만 그 값을 생성자로 변경

 

3번에서 값이 0일 때만 값을 생성자로 변경하는 이유는 반복문으로 1부터 증가하면서 분해 합의 생성자를 변경하기 때문에 가장 먼저 값이 변경된 값이 가장 작은 생성자가 된다.

 

그렇기 때문에 값이 이미 변경된 상태라면 그것이 곧 가장 작은 생성자, 즉 답이기 때문에 값이 변경된적 없었을 때만 바꾼다.

728x90
반응형

댓글