본문 바로가기

백준

[JAVA] 백준 2231번: 분해합

 


문제

  • 자연수 N이 주어질 때 N의 생성자를 찾는 문제.
  • 생성자는 각 자리수와 생성자 수의 합을 이용해 구한다. (265의 생성자인 245의 경우 245+2+4+5)

 

아이디어

  • 각 자리수를 더하기 위해 10으로 나눈 나머지를 계속해서 더한다.
  • 다음 자리수를 더하기 위해서는 나눠지는 값을 10으로 나눈 몫으로 갱신하여 자리수를 하나씩 줄여 나가야 한다.

 

풀이

import java.util.*;
import java.io.*;

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());

        for(int i=0; i<N+1; i++) {
            int result = i;
            int num = i;
            while(num > 0) {
                result += num % 10;
                num /= 10;
            }
            if(result == N) {
                System.out.println(i);
                return;
            }
        }
        System.out.println(0);
    }
}

 

 

채점 결과

2231번 채점 결과

기타

  •   자리수를 어떻게 접근해야 할지 조금 고민이 되었던 문제였다.

 

문제 링크

'백준' 카테고리의 다른 글

[JAVA] 백준 2798번: 블랙잭  (1) 2024.07.10
[JAVA] 백준 2292번: 벌집  (0) 2024.07.10
[JAVA] 백준 4153번: 직각삼각형  (0) 2024.07.09
[JAVA] 백준 1978번: 소수 찾기  (0) 2024.07.09
[JAVA] 백준 30802번: 웰컴 키트  (1) 2024.07.09