# 1038 감소하는 수
# X의 자릿수가 가장 큰 자릿수
import collections
def dfs(N):
deque = collections.deque()
for i in range(1,10):
deque.append((i,str(i)))
while deque:
if len(result) == N+1:
break
cur_num,to_num = deque.popleft()
if cur_num != 0:
for k in range(cur_num):
temp = to_num + str(k)
deque.append((k,temp))
result.append((temp))
N = 1023
result = []
for i in range(10):
result.append(i)
if N >=10:
dfs(N)
if len(result) > N:
print(result[N])
else:
print(-1)
기본적인 백트래킹 문제이다. 처음에 1~9의 수를 넣어주고, 그보다 낮은 자리수에서 더 낮은 값을 넣어주면서 결과값에 넣어주고, 해당 길이를 초과하는 N이 나올시에는, -1을 출력하도록 했따.
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ/백준] 9252 LCS 2 (0) | 2021.01.17 |
---|---|
[BOJ/백준] 2565 전깃줄 (0) | 2021.01.17 |
[BOJ/백준] 11052 카드 구매하기 (0) | 2021.01.16 |
[BOJ/백준] 17086 아기 상어 2 (0) | 2021.01.15 |
[BOJ/백준] 2564 경비원 (0) | 2021.01.15 |