[백준] 2231 : 분해합 <JAVA>

 


입력받은 자연수 N에 대한 가장 작은 생성자를 구하는 프로그램

-분해합 & 생성자 원리 : A = 245일 때, A의 분해합 = 245 + 2 + 4 +5 = B. B의 생성자 = 245

-
숫자 N의 생성자는 1~N사이 값이다. 따라서, 1~N까지 생성자 인지 아닌지 검사하며 최소 생성자를 구한다.

- 브루트 포스 알고리즘

  

구현 순서 : 

  1. 자연수 N 입력
  2. 자연수 1 ~ N-1까지 N의 생성자 인지 검사
    1. buf = N - test_N (test_N은 1부터 N까지 검사하는 수)
    2. buf와  test_N의 각 자릿수 합이 동일한지 검사
    3. 동일하다면 test_N 출력 -> 프로그램 종료
    4. 다르다면 2-1로 돌아가 test_N+1 검사
  3. 검사해도 찾지 못할 경우, 0 출력
  4. 종료

 

import java.util.Scanner;
public class Main {
 
	public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt();

    int buf,check,sum;
    for(int test_N=1; test_N < N ; test_N++){
      buf = N - test_N;
      sum = 0;
      check = test_N;
      while(check != 0){
        sum += check%10;
        
        check /= 10;
      }

      if(sum == buf){
        System.out.println(test_N);
        return;
      }
    }
    System.out.println(0);
  
  }
}