import java.io.*;
import java.util.*;
class Main {
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// N을 입력받는다.
int N = Integer.parseInt(br.readLine());
// String타입의 리스트 선언
List<String> list = new ArrayList<>();
for(int i = 0; i < 1000000; i++) {
if(String.valueOf(i).length() == 1){
list.add(String.valueOf(i));
}else{
String temp = String.valueOf(i);
for(int j = 0; j < temp.length(); j++) {
if(j != 0 && temp.charAt(j-1) > temp.charAt(j)){
list.add(temp);
}
}
}
}
System.out.println(list.get(N));
}
}
import java.io.*;
import java.util.*;
class Main {
public static List < Long > list = new ArrayList < > ();
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// N을 입력받는다.
int N = Integer.parseInt(br.readLine());
// 10이하 인 경우 출력
if (N <= 10) {
System.out.println(N);
}
// N이 1022보다 큰 경우 -1 출력 => 최대로 나올 수 있는 결과 값을 초과함
else if (N > 1022) {
System.out.println(-1);
} else {
// 최대로 나타탤 수 있는 자리수는 10자리이기 때문
for (int i = 0; i < 10; i++) {
bruteforce(i, 1);
}
// 순서대로 정렬
Collections.sort(list);
System.out.println(list.get(N));
}
}
public static void bruteforce(long number, int index) {
// 최대로 나타낼 수 있는 자리의 수가 10자리 이므로, 10 이상일 경우 리턴
if (index > 10) {
return;
}
// 숫자를 리스트에 추가
list.add(number);
for (int i = 0; i < number % 10; i++) {
bruteforce((number * 10) + i, index + 1);
}
}
}
해결방법
0
1
10
2
20
21
210
3
30
31
310
32
320
321
3210