#2231. 분해합
Problem
- 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합
- 245의 분해합 : 245+2+4+5 = 256
245는 256의 생성자 - 생성자는 없을 수도 여러 개일 수도 있음
- 없다면 0 출력
Goal: N이 주어졌을 때 N의 가장 작은 생성자 출력
Solution
- 1부터 최대 N-1까지 분해합을 구하면서 풀어보면 어떻게 될까?
- 1부터 분해합을 구하다가 N이 되었을 때 종료하면 가장 작은 생성자를 출력할 수 있다.
- 분해합 구하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32212의 분해합 구하기
212 자릿수 3
// #1.
212 / 10^2 = 2 -> 212+2
212 - 2*10^2 = 12
// #2.
12 / 10^1 = 1 -> 212+2+1
12 - 1*10^1 = 2 -> 212+2+1+2
11의 분해합 구하기
11 자릿수 2
div = 10 (10의 제곱 수)
sum = 11 (분해합)
// #1.
temp = 11 / 10 = 1 (계산 용도)
num = 11 - 10 = 1
sum = 11 + 1 = 12
div = 1
// #2.
temp = 1 / 1 = 1
num = 1 - 1 = 0
sum = 12 + 1 = 13
div = 0
그냥 더 간단한 방법이 생각났다. (2 Try 참고)
sum, temp = 11
sum = 11 + 11 % 10
temp = 11 / 10 = 1
sum = 12 + 1 % 10 = 13
즉,
sum += temp % 10
temp /= 10
1 Try
1 |
|
108ms
2 Try
1 |
|
8ms