본문 바로가기
Algorithm

백준 2231번 분해합

by 2nyong 2023. 3. 13.

분해합은 어떤 자연수 N이 주어졌을 때, 생성자 숫자를 구하는 문제다.

 

반대로 분해합은 어떤 자연수 N과 N을 이루는 각 자리수의 합을 의미한다.

 

예를 들어 N = 245 라면 분해합은 245 + (2 + 4 + 5) = 256 이다.

 

이 문제는 숫자를 증가시키며 분해합을 계산하고, 그 계산값이 N과 일치하는 숫자를 출력해 풀이하였다.

 

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        int N = in.nextInt();

        int ans = func(N);
        System.out.println(ans);
    }

    public static int func(int N) {
        
        for (int i = 1; i < N; i++) { // N의 생성자는 N보다 크지 않으므로 반복구간 설정에 유의한다.

            int sum = i;
            int num = i;
            
            // 각 자리수를 더함.
            while (num != 0) {
                sum += num % 10;
                num /= 10;
            }
            
            if (sum == N) {
                return i;
            }
            
        }
        return 0;
    }
}

'Algorithm' 카테고리의 다른 글

백준 1003번 피보나치 함수  (1) 2023.03.14
백준 1010번 다리 놓기  (0) 2023.03.14
백준 2798번 블랙잭  (0) 2023.03.13
백준 1436번 영화감독 숌  (0) 2023.03.11
백준 1934번 최소공배수  (0) 2023.03.11

댓글