DFS를 통해 백트래킹한다. 왼쪽 수가 오른쪽 수보다 커야 하고, 수
number
가 비어있다면 값을 그대로 주거나 출력할 수 있다. 중복 수는 집합으로 체크하자.
import sys
n = int(sys.stdin.readline().rstrip())
result = set()
# 중복 체크
number = []
def DFS():
global result
global number
if number:
result.add(int("".join(map(str, number))))
for i in range(10):
if not number or number[-1] > i:
number.append(i)
DFS()
number.pop()
# 백트래킹
DFS()
result = list(result)
result.sort()
if len(result) >= n: print(result[n-1])
else: print(-1)