9506번 문제
문제
🗝️포인트
- 약수를 배열에 담는다.
- sum 변수를 지정하여 n을 제외한 모든 약수들의 합을 대입한다.
- 완전수인 경우, 모든 약수를 더한 형태의 문자열을 출력하게 되는데...
- 이때, 약수 1은 모든 수에 공통으로 들어가기 때문에 미리 StringBuilder에 담아놓고 '+ 약수'를 반복문을 돌려 담아준다.
제출 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String str = "";
while(!(str = br.readLine()).equals("-1")){
int n = Integer.parseInt(str);
int[] arr = new int[n+1];
int sum = 0;
for(int i = 1; i <= n; i++){
if(n%i == 0 && n != i){
arr[i] = i;
sum += i;
}
}
if( sum != n){
sb.append(n + " is NOT perfect.").append("\n");
continue;
}
sb.append(n + " = 1");
for(int i = 1; i < arr.length; i++){
if( arr[i] > 1){
sb.append(" + " + arr[i]);
}
}
sb.append("\n");
}
System.out.println(sb);
br.close();
}
}
참조 포스팅