BAEKJOON 9506번: 약수들의 합

Kim Hyen Su·2023년 6월 29일
0

⏲️ 알고리즘

목록 보기
25/95

9506번 문제

문제

🗝️포인트

  1. 약수를 배열에 담는다.
  2. sum 변수를 지정하여 n을 제외한 모든 약수들의 합을 대입한다.
  3. 완전수인 경우, 모든 약수를 더한 형태의 문자열을 출력하게 되는데...
  • 이때, 약수 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();
	}
}

참조 포스팅

profile
백엔드 서버 엔지니어

0개의 댓글