[백준] 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
9506번: 약수들의 합
어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.
www.acmicpc.net
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 |