본문 바로가기
코딩테스트/백준

JAVA 백준 2231번 분해합

by 광고(주) 2022. 6. 20.
반응형

문제

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다.
자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다.

216

출력

첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다.

198

알고리즘 분류

브루트포스 알고리즘(bruteforcing)

소스코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        int ans = 0;
        int logn = (int) Math.log10(N) + 1;
        for (int m = N - (logn * 9); m < N; m++) {
            if (N == m + divide(m)) {
                ans = m;
                break;
            }
        }
        System.out.println(ans);
    }

    public static int divide(int a) {
        int ans = 0;
        for (int i = 0; i < 6; i++) {
            ans += (a % 10);
            a /= 10;
            if (a == 0) break;
        }
        return ans;
    }
}
반응형

'코딩테스트 > 백준' 카테고리의 다른 글

JAVA 백준 17087번 박 터뜨리기  (0) 2022.06.21
JAVA 백준 7568번 덩치  (0) 2022.06.21
JAVA 백준 23276번 Locust Locus  (0) 2022.06.19
JAVA 백준 21412번 Дробь  (0) 2022.06.18
JAVA 백준 4890번 Tiles of Tetris, NOT!  (0) 2022.06.18

댓글