본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 - 9506번: 약수들의 합 [Java]

문제: https://www.acmicpc.net/problem/9506

 

9506번: 약수들의 합

어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.

www.acmicpc.net

1. 코드

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = -1;
		
		while(true){
			N = sc.nextInt();
			if(N == -1) break;
			
			List <Integer> list = new ArrayList<>();
			int sum = 0;
			for(int i = 1; i < N; i++) {
				if(N % i == 0) {
					sum += i;
					list.add(i);
				}
			}
			
			if(sum == N) {
				System.out.print(N + " = ");
				for(int i = 0; i < list.size(); i++) {
					System.out.print(list.get(i));
					if(i + 1 < list.size())
						System.out.print(" + ");
					else
						System.out.println();
				}
			}
			else
				System.out.println(N + " is NOT perfect.");
		}
	}
}

2. 설명

List를 활용하여 약수 내용을 저장하여 완전수일 경우 출력하도록 하였다.