본문 바로가기

코테 준비

백준 2231번 - 분해합(Java)

백준 2231번 - 분해합(Java)

 

문제

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다.

자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다.

출력

첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다.

풀이 과정

1. 1부터 N까지의 수를 0부터 시작해서 판별하는 코드를 작성했다.

2. 생성자가 존재하지 않을 경우 0을 출력하기 위해 check 변수를 추가하여 수정했더니 성공했다.

 

 

import java.util.*;
 
public class Main {
	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		int N = scanner.nextInt();
		int sum, num;
		int check = 0;

		for(int i=0; i<N; i++) {
			sum = i;
			num = i;
			while(num>0) {
				sum += num%10;
				num /= 10;
			}
			if(sum==N) {
				System.out.println(i);
				check = 1;
				break;
			}
		}
		if(check==0) {
			System.out.println(0);
		}
	}
}