https://www.acmicpc.net/problem/9506
◎ 문제
◎ 코드
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
|
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
// n을 입력받는다.
int n = sc.nextInt();
// n이 -1이면 멈춘다.
if (n==-1) {
break;
}
// 약수리스트를 생성한다.
List<Integer> factorList = new ArrayList<>();
// 약수들을 리스트에 넣는다.
for (int i = 1; i < n; i++) {
if (n % i == 0) {
factorList.add(i);
}
}
// 자기 자신을 제외한 n의 약수들의 합을 구한다.
int sum = 0;
for (int i = 0; i < factorList.size(); i++) {
sum += factorList.get(i);
}
// 만약 위에서 구한 합이 n과 같다면 예제와 같이 약수들의 합으로 나타낸다.
if (sum == n) {
System.out.print(n + " = 1 ");
for (int i = 1; i < factorList.size(); i++) {
System.out.print("+ " + factorList.get(i) + " ");
}
System.out.println();
// 합이 n이 아니라면 'n' is NOT perfect. 를 출력한다.
} else {
System.out.println(n + " is NOT perfect.");
}
}
}
}
|
cs |
◎ 풀이 및 기록
약수를 구할 수 있다면 어렵지 않은 문제였다.
'코테' 카테고리의 다른 글
[백준 / Java] 24267번 : 알고리즘 수업 - 알고리즘의 수행 시간 6 (0) | 2023.02.27 |
---|---|
[백준 / Java] 9020번 : 골드바흐의 추측 (0) | 2023.02.26 |
[백준 / Java] 2566번 : 최댓값 (0) | 2023.02.24 |
[백준 / Java] 25206번 : 너의 평점은 (1) | 2023.02.23 |
[백준 / Java] 11653번 : 소인수분해 (0) | 2023.02.20 |