https://www.acmicpc.net/problem/1174
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class Main {
static int[] nums = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
static ArrayList<Long> arr = new ArrayList<Long>();
static int num;
public void dfs(long sum, int index) {
if(!arr.contains(sum)) {
arr.add(sum);
}
if(index >= 10) {
return;
}
dfs(sum * 10 + nums[index], index + 1);
dfs(sum, index + 1);
}
public long getDecreasingNum() {
dfs(0, 0);
Collections.sort(arr);
if(num > 1023) {
return -1;
} else {
return arr.get(num - 1);
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
num = Integer.parseInt(br.readLine());
br.close();
Main m = new Main();
bw.write(m.getDecreasingNum() + "\n");
bw.flush();
bw.close();
}
}
public void dfs(long sum, int index) {
if(!arr.contains(sum)) {
arr.add(sum);
}
if(index >= 10) {
return;
}
dfs(sum * 10 + nums[index], index + 1);
dfs(sum, index + 1);
}
선택하는 경우
선택하지 않는 경우