응애개발자
article thumbnail
728x90

문제

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

접근 방법

1. N이 100일때 이 분해합은 86(86+8+6) 이 됩니다. 

2. 결국 분해합을 구하려면 N보다 작은 수들로 이루어져 있는데 각 자리가 최대 9까지 나올수 있으므로 총 자리수 * 9 작은 값부터 N까지 완탐방식으로 구하면 됩니다.

 

코드

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

public class Main {
    private static BufferedReader br;
    private static StringBuilder sb;
    private static int N;
    private static int nLength;
    
    //입력
    public static void input() throws Exception{
        br = new BufferedReader(new InputStreamReader(System.in));
        sb = new StringBuilder();

        N = Integer.parseInt(br.readLine());
        nLength = String.valueOf(N).length();
    }
    
    //과정
    public static void process(){
        for(int i = N-nLength*9; i < N ; i++){
            int value = i;
            int sum = i;

            while ( value%10 != 0){
                sum += value%10;
                value = value/10;
            }

            if(sum == N){
                System.out.println(i);
                return;
            }
        }
        System.out.println(0);
    }
    
    public static void main(String[] args) throws Exception{
        input();
        process();
    }
}
profile

응애개발자

@Eungae-D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!