๐งฉ Baekjoon 9506 - ์ฝ์๋ค์ ํฉ
๐งฉ Baekjoon 9506 - ์ฝ์๋ค์ ํฉ
### ๋ฌธ์
์ด๋ค ์ซ์ n์ด ์์ ์ ์ ์ธํ ๋ชจ๋ ์ฝ์๋ค์ ํฉ๊ณผ ๊ฐ์ผ๋ฉด,ย ๊ทธ ์๋ฅผ ์์ ์๋ผ๊ณ ํ๋ค. ์๋ฅผ ๋ค์ด 6์ 6 = 1 + 2 + 3 ์ผ๋ก ์์ ์์ด๋ค. n์ด ์์ ์์ธ์ง ์๋์ง ํ๋จํด์ฃผ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ.
์ ๋ ฅ
์ ๋ ฅ์ ํ ์คํธ ์ผ์ด์ค๋ง๋ค ํ ์ค ๊ฐ๊ฒฉ์ผ๋ก n์ด ์ฃผ์ด์ง๋ค. (2 < n < 100,000) ์ ๋ ฅ์ ๋ง์ง๋ง์ -1์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
ํ ์คํธ์ผ์ด์ค ๋ง๋ค ํ์ค์ ํ๋์ฉ ์ถ๋ ฅํด์ผ ํ๋ค. n์ด ์์ ์๋ผ๋ฉด, n์ n์ด ์๋ ์ฝ์๋ค์ ํฉ์ผ๋ก ๋ํ๋ด์ด ์ถ๋ ฅํ๋ค(์์ ์ถ๋ ฅ ์ฐธ๊ณ ). ์ด๋, ์ฝ์๋ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ๋์ดํด์ผ ํ๋ค. n์ด ์์ ์๊ฐ ์๋๋ผ๋ฉด n is NOT perfect. ๋ฅผ ์ถ๋ ฅํ๋ค.
์์
โ ์ ๋ ฅ 1
1
2
3
4
6
12
28
-1
โ ์ถ๋ ฅ 1
1
2
3
6 = 1 + 2 + 3
12 is NOT perfect.
28 = 1 + 2 + 4 + 7 + 14
์์ฑ ์ฝ๋
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) throws IOException {
// 1. ๋ณ์ ์ ์ธ ๋ฐ ์ด๊ธฐํ
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 2. ์
๋ ฅ ๊ฐ์ด "-1"์ผ ๋๊น์ง ๋ฐ๋ณต
while (true) {
// ๋ณ์ ์ ์ธ ๋ฐ ์ด๊ธฐํ
StringBuilder sb = new StringBuilder();
List<Integer> divisors = new ArrayList<>();
int n = Integer.parseInt(br.readLine());
// ์ค๋จ
if (n == -1) break;
// ์ฝ์ ๊ตฌํ๊ธฐ
int sum = 0;
for (int i = 1; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
divisors.add(i);
sum += i;
if (i != n / i && n / i != n) {
divisors.add(n / i);
sum += n / i;
}
}
}
// ์ ๋ ฌ
if (sum == n) {
Collections.sort(divisors);
sb.append(n).append(" = ");
for (int divisor : divisors) sb.append(divisor).append(" + ");
sb.setLength(sb.length() - 2);
} else {
sb.append(n).append(" is NOT perfect.");
}
// ์ถ๋ ฅ
System.out.println(sb);
}
}
}
This post is licensed under CC BY 4.0 by the author.