728x90
https://www.acmicpc.net/problem/9506
📝 나의풀이
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(true) {
int N = scanner.nextInt();
if(N == -1) {
break;
}
ArrayList<Integer> NArray = new ArrayList<Integer>(); //약수를 담을 배열
int NSum =0; // 약수의 합
for(int i=1; i<N; i++) {
if(N%i==0) {
NArray.add(i);
NSum+=i;
}
} //약수일 때 숫자 담기
if(NSum!=N) {
System.out.println(N+" is NOT perfect.");
continue;
} else {
System.out.print(N +" = ");
for(int i=0; i<NArray.size(); i++) {
if(NArray.get(i)==1) {
System.out.print(NArray.get(i));
} else {
System.out.print(" + "+NArray.get(i));
}
}
System.out.println();
}
}
}
}
- 제일 마지막에 줄바꿈을 하지 않아서 계속 오류로 뜨는 바람에 애를 많이 먹었다.
- while(true) 를 통해 무한반복, -1이 입력되면 break; 되도록 해 준다.
- 약수일 때 NArray에 담아주고 어차피 순서대로 들어가기 때문에 오름차순 정렬은 따로 하지 않았다.
- 완전수라면 약수들의 합을 나타내어 출력
ex) 6 = 1 + 2 + 3
완전수가 아니라면 n is NOT perfect 출력이기 때문에
약수의 합이 N과 다르면 (NSum != N ) n is NOT perfect 출력 - 그리고 마지막에 꼭 줄바꿈..!!
728x90
'코딩테스트 > [JAVA] 백준' 카테고리의 다른 글
[백준 | 1978번] 소수 찾기 (0) | 2023.08.13 |
---|---|
[백준 | 5622번] 다이얼 (0) | 2023.08.13 |
[백준 | 2444번] 별찍기-7 (0) | 2023.08.10 |
[백준 | 10813번] 공바꾸기 (0) | 2023.08.10 |
[백준 | 27323번] 직사각형 (0) | 2023.08.10 |