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