본문 바로가기
알고리즘

[백준] 분해합 [Java/자바]

by irerin07 2019. 9. 10.
728x90

문제: https://www.acmicpc.net/problem/2231

코드: https://github.com/irerin07/AlgorithmStudyBaek/blob/master/src/baekjoon2231.java

 

import java.util.ArrayList;
import java.util.Scanner;

public class baekjoon2231 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        System.out.println(solution(N));

    }
    public static int solution(int N){
        int answer = 0;

        for(int i = 0; i < N; i++){
            int temp = i;
            for(int j = 0; j < String.valueOf(i).length(); j++){
                temp = temp + String.valueOf(i).charAt(j)-48;
            }
            if(temp == N){
                answer = i;
                return answer;
            }
        }
        return answer;
    }
}

 

어제에 이어 같은 브루트포스 문제이다.

합을 만들고 싶은 수 N을 입력받고

N의 최소 분해합을 찾는 문제이다.

 

예를 들어 216같은 경우

198 + 1 + 9 + 8 을 합하면 216이 나오게 되며 198은 216의 최소 분해합이 된다.

 

10을 예로 들면

5 + 5를 하여 10이 나오게 되므로 5는 10의 최소 분해합이다.

 

1부터 N까지 for loop을 돌면서

i의 각 자리수를 분해하여 한자리수들로 만든 뒤 그 합을 구하고

i에 구한 값을 더하여 N이 나오는지 확인하는 것이다.

 

최소 분해합을 찾아야 하기 때문에 0부터 시작하여 N으로 올라가는 방식을 사용했다.

 

728x90

'알고리즘' 카테고리의 다른 글

[백준]동전 0 [Java/자바]  (0) 2019.09.15
[백준] 덩치 [Java/자바]  (0) 2019.09.10
[백준]블랙잭 [Java/자바]  (0) 2019.09.09
[백준] ATM [Java/자바]  (0) 2019.06.15
[백준] 동전 0 [Java/자바]  (0) 2019.06.15