본문 바로가기
코딩테스트

[완전탐색] 백준 2231번 분해합

by Enhydra lutris 2022. 10. 6.

쉬운 문제여서 처음 써보는 메소드 같은건 없었다.

 

가장 작은 생성자를 구해야 하는데 처음에 실수로 가장 큰 생성자를 구해 버렸다.

문제를 잘 읽어야겠다

import java.util.Scanner;

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

        for(int i = 0; i < N; i++){
            int sum = i;
            int a = i;
            
            while(a != 0){  //각 자리수 더하기
                sum += a % 10;
                a /= 10;
            }

            if(sum == N){
                result = i;
                break; 
            }
        }
        System.out.println(result);
    }
}

완전 탐색은 가능한 모든것을 다 시도해서 답을 찾는 방법이기 때문에 for문으로 0부터 N까지의 수를 모두 돌아가면서 분해합을 찾으면 된다.

 

2231번: 분해합

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이

www.acmicpc.net

 

댓글