[백준 1174] 줄어드는 수

1. 문제 설명

줄어드는 수

2. 문제 분석

DFS를 통해 백트래킹한다. 왼쪽 수가 오른쪽 수보다 커야 하고, 수 number가 비어있다면 값을 그대로 주거나 출력할 수 있다. 중복 수는 집합으로 체크하자.

3. 나의 풀이

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)

좋은 웹페이지 즐겨찾기