⭐️ 백트래킹
⭐️ 가능한 숫자 0~9876543210 범위 내의 줄어드는 숫자를 모두 vector에 push 하고 n 번째 숫자 return
n-1
번째 숫자 return 자릿수를 따져주는 문제는 문자열로 처리해주는 게 더 간편
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
vector<long long> v;
void dfs(string s,int cur) {
for(int i=cur-1;i>=0;i--) {
s+=(i+'0');
v.push_back(stoll(s));
dfs(s,i);
s.pop_back();
}
}
int main() {
int n;
cin >> n;
for(int i=0;i<=9;i++) v.push_back(i);
for(int i=1;i<=9;i++) {
string s=to_string(i);
dfs(s,i);
}
sort(v.begin(),v.end());
if(v.size()<n) cout << -1;
else cout << v[n-1];
}