Coding Test/백준 - JAVA

백준 9506번 약수들의 합 (JAVA)

6uiw 2024. 12. 28. 21:42

📌문제

어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다.

예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다.

n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.

입력

입력은 테스트 케이스마다 한 줄 간격으로 n이 주어진다. (2 < n < 100,000)

입력의 마지막엔 -1이 주어진다.

출력

테스트케이스 마다 한줄에 하나씩 출력해야 한다.

n이 완전수라면, n을 n이 아닌 약수들의 합으로 나타내어 출력한다(예제 출력 참고).

이때, 약수들은 오름차순으로 나열해야 한다.

n이 완전수가 아니라면 n is NOT perfect. 를 출력한다.

예제 입력 

6
12
28
-1

예제 출력

6 = 1 + 2 + 3
12 is NOT perfect.
28 = 1 + 2 + 4 + 7 + 14

 

📌답

import java.io.*;

public class Main {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int x = 0;

            while (true) {
                x = Integer.parseInt(br.readLine());
                int y = 0;
                StringBuilder sb = new StringBuilder();
                if(x==-1) break;
                for(int i=1; i<x; i++) {
                    if(x%(i)==0) {
                        y+=i;
                        sb.append(i + " + ");
                    }
                }
                if(x==y) { //완전수일 때 
                    sb.delete(sb.length() - 3, sb.length()); //마지막 "+" 제거
                    System.out.println(sb.insert(0, x+" = ")); //맨 앞에 "X =" 추가
                } else System.out.println(x+" is NOT perfect."); //완전수가 아닐 때 
            }
            br.close();

        }
    }

 

 

 

 

 

 

 

끝까지 읽어주셔서 감사합니다 :)

Have a good day🐱

 


📢

1. 개발자 준비생이 공부한 내용을 정리한 글입니다. 내용에 오류가 있을 수 있습니다.
2. 위와 같은 이유로 내용에 대한 지적과 조언은 감사하게 받습니다.
3. 이 글의 내용은 계속 공부함으로써 언제든지 추가/수정 될 수 있습니다.