반응형
문제
해설
1. 어떤 자연수 p와 q가 있을 때, 만일 p를 q로 나누었을 때 나머지가 0이면 q는 p의 약수이다. (백준 2506 문제 참조)
2. 약수를 구하여 저장한다.
3. 저장한 약수를 더하여 입력받은 값과 일치하면 출력한다.
풀이
입력받은 약수를 출력할 때만 고민하면 되는 어렵지 않은 문제이다.
1. 숫자를 계속 입력받는다.
2. -1을 입력받으면 반복문을 빠져나온다 / 링크 : break 문 설명
3. 약수를 구한다.
4. 입력받은 약수를 출력한다.
package AlgorithmStudy.src.bronze;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class B9506 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while (true) {
int a = Integer.parseInt(br.readLine());
if (a == -1) break; // -1 을 입력받으면 while 문에서 빠져나온다.
if (2 >= a || a >= 100000) return;
int[] chk = new int[a];
int sum = 0;
for (int i = 1; i < a + 1; i++) {
if (a % i == 0 && a != i) {
chk[i] = i;
sum += i;
}
}
if (sum == a) {
System.out.print(a + " = ");
System.out.print(1); // 1은 모든 수의 약수이므로 출력
for (int i = 2; i < chk.length; i++) {
if (chk[i] != 0) {
System.out.print(" + " + i);
}
}
System.out.println();
} else {
System.out.println(a + " is NOT perfect.");
}
}
}
}
반응형