[백준] 9506번 약수들의 합 Java 문제 풀이
2023. 3. 20. 18:21ㆍ알고리즘/백준
728x90
반응형
문제풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
interface Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int n = Integer.parseInt(br.readLine()), sum = 0;
while(n != -1) {
sb.setLength(0);
sb.append(n + " = 1");
sum = 1;
for(int i=2; i<n; i++) {
if(n%i==0) {
sb.append(" + " + i);
sum += i;
}
}
if(sum == n) {
System.out.println(sb);
} else {
System.out.println(n + " is NOT perfect.");
}
n = Integer.parseInt(br.readLine());
}
}
}
1 포함, 자신을 제외한 약수들의 합이 자신과 같을 경우 완전수입니다.
약수일 경우 sum에 값들을 저장하고 반복이 끝났을 때 n과 sum을 비교하여 같으면 반복하며 StringBuilder에 저장한 값들을 출력해줍니다.
같지 않을 경우 N is NOT perfect.를 출력합니다.
StringBuilder를 초기화할 땐 setLength(0)을 해줬습니다.
모든 수의 약수에는 1이 포함되므로
sum에는 1을 고정으로 저장하고,
sb에는 "n = 1"을 고정으로 저장했습니다. 약수가 있을 경우 sb += "+ 약수" 이렇게만 해주면 됩니다.
출처 : https://www.acmicpc.net/problem/9506
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 15894번 수학은 체육과목 입니다 Java 문제 풀이 (0) | 2023.03.21 |
---|---|
[백준] 27323번 직사각형 Java 문제 풀이 (0) | 2023.03.20 |
[백준] 5086번 배수와 약수 Java 문제 풀이 (0) | 2023.03.20 |
[백준] 10798번 세로읽기 Java 문제 풀이 (0) | 2023.03.17 |
[백준] 25206번 너의 평점은 Java 문제 풀이 (0) | 2023.03.17 |