250x250
Notice
Recent Posts
Recent Comments
관리 메뉴

탁월함은 어떻게 나오는가?

[알고리즘트레이닝] 백준알고리즘(BAECKJOON ALGORITHM) 2231번: 분해합 [JAVA] 본문

[Snow-ball]프로그래밍(컴퓨터)/Algorithm Training

[알고리즘트레이닝] 백준알고리즘(BAECKJOON ALGORITHM) 2231번: 분해합 [JAVA]

Snow-ball 2022. 1. 28. 11:24
반응형

문제 :

어떤 자연수 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을 출력한다.

 

 

 

 

 

[JAVA] :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.company.buteFoce;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class DecompositionSum3 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int decomSumNum = Integer.parseInt(br.readLine());
 
        if (decomSumNum < 1 || 1000000 < decomSumNum) {
            System.out.printf("숫자 범위를 확인해보세요.\n범위는 1 <= N <= 1,000,000 입니다.");
            return;
        }
        
        int result = calculation2(decomSumNum);
        System.out.println("result : " + result);
    }
 
    static int calculation2 (int decomSumNum) {
        int resultNum = 0;
        for (int i = 0; i < decomSumNum; i++) {
            int sumNum = 0;
            int num = i;
            while(num != 0) {
                sumNum += num % 10;
                num /= 10;
 
            }
            if(sumNum + i == decomSumNum) {
                resultNum = i;
                break;
            }
        }
        return resultNum;
    }
}
 
cs

 

 

 

 

 

 

 

 

베타존 : 네이버쇼핑 스마트스토어

나를 꾸미다 - 인테리어소품 베타존

smartstore.naver.com

 

반응형
Comments