[백준/JAVA] 9506번 약수들의 합

정은아·2024년 1월 15일

[알고리즘] 수학 모음

목록 보기
16/152
post-thumbnail

내 풀이

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		// 완전수를 구하는 문제
		
		// 1. 답을 출력할 answer 변수를 만들어준다.
		// 2. while문을 무한반복으로 돌리고 -1을 받으면 break한다.
		// 3. 테스트케이스 int를 받아온다.
		// 4. for문을 테스트케이스 만큼 돌려서 자기 자신보다 -1까지 돌린다.
		// 5. 나머지가 0인 경우 약수이므로 answer에 중첩해준다.
		// 5-1. if문을 사용해 약수를 모두 더한 값이 A와 같은지 비교한다.
		// 6. 같을 경우에만 answer에 A += 0 + 이렇게 받아온다.
		// 7. 완전수가 아니면 answer에 A is not perfect를 출력한다.
		
		Scanner sc = new Scanner(System.in);
		
		String answer = "";
		int count = 0;
		
		while(sc.hasNext()) {
			int A = sc.nextInt();
			answer = A + " = ";
			count = 0;
			if (A == -1) {
				break;
			}else {
				for (int i = 1; i < A; i++) {
					if (A % i == 0) {
						count += i;
						answer += i + " + ";
					} 
				}
				
				if(A != count) {
					answer = A + " is NOT perfect.";
				} else {
					answer = answer.substring(0, answer.length()-3);
				}
			}
			System.out.println(answer);
		}
	}
}
profile
꾸준함의 가치를 믿는 개발자

0개의 댓글