[백준] 1038 감소하는 수

알파·2022년 7월 3일
0

10을 초과하지 않으면 N을 출력한다.
10을 초과하면 dfs를 돌리면서 list에 추가해주고 list를 sort해서 출력한다.
list 사이즈보다 N이 클 경우 -1을 출력한다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;

public class Solution1038 {

    static int N;
    static ArrayList<Long> arr = new ArrayList<>();
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        N = Integer.parseInt(br.readLine());
        arr = new ArrayList<>();

        if(N <= 10) {
            System.out.println(N);
        } else {
            for(int i = 0; i < 10; i++) {
                dfs(i, 1);
            }

            Collections.sort(arr);

            if(arr.size() < N+1) {
                System.out.println(-1);
            } else {
                System.out.println(arr.get(N));
            }
        }

    }

    static void dfs(long num, int numLength) {
        if(numLength > 10) {
            return;
        }
        arr.add(num);
        for(int i = 0; i < 10; i++) {
            if(num % 10 > i) {
                dfs((num * 10) + i,  numLength+1);
            }
        }
    }
}
profile
I am what I repeatedly do

0개의 댓글