티스토리 뷰

알고리즘/백준

[백준] 2231번 분해합

머어하지 2018. 10. 20. 01:06

생각

Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q2000/Q2231.java N이 주어졌을 때 N을 만들 수 있는 M의 최소값을 출력하여라. 없다면 0을 출력하여라 만드는 법은 M의 각자리 수의 숫자 +M이다. 123 이라면 123+1+2+3 을 N으로 주어진다.


처음 생각

각 자리수의 숫자를 더해야하므로 String으로 각 index를 뽑아오면 좋겠다고 생각하였다. N을 만들 수 있는 M의 최소값을 출력해야하기 때문에 1부터 N-1까지 반복문을 돌렸다.


다음 생각

반복문을 돌다 해당하는 수가 있다면 그 수를 출력한 후, return을 통해 메인 메소드를 종료시켰다. 없을 경우 즉, 반복문이 다 돌았다면 0을 출력하고 끝낸다.



방안


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
package baekjoon.q2000;
 
import java.util.Scanner;
 
public class Q2231 {
    static int n;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        // 최소를 출력해야 하므로 모든 1부터 모든 경우수를 봐보자
        for(int i=1;i<n;i++) {
            if(n==solve(String.valueOf(i))) {
                // 있다면 해당 수 출력 후 종료
                System.out.println(i);
                return;
            }
        }
        // 없다면 0 출력
        System.out.println(0);
    }
    
    private static int solve(String num) {
        int len = num.length();
        // 원래수 더하기
        int sum = Integer.parseInt(num);
        // 각 자리수 숫자 더하기
        for(int i=0;i<len;i++)
            sum += num.charAt(i)-'0';
        return sum;
    }
}
 


'알고리즘 > 백준' 카테고리의 다른 글

[백준] 10448번 유레카 이론  (0) 2018.10.20
[백준] 3085번 사탕 게임  (0) 2018.10.20
[백준] 13460번 구슬 탈출2  (4) 2018.10.20
[백준] 15683번 감시  (2) 2018.10.19
[백준] 12100번 2048 (Easy)  (0) 2018.10.19
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday