기록하고 까먹지 말기

15652 본문

전공/백준

15652

yha97 2022. 10. 10. 10:46

날짜 : 2022. 10. 10

사용 언어 : python

 

문제

 

 

코드

import sys

def dfs():
    #print(stack) # 디버깅 용도
    # stack 크기가 2보다 크고 마지막 숫자가 그 다음 숫자보다 작은경우
    if len(stack) >= 2 and stack[-1] < stack[-2]: 
        return # 리턴
    if len(stack) >= m:
        for i in stack:
            print(i, end=' ')
        print()
        return
    for i in range(1, n+1):
        stack.append(i)
        dfs()
        stack.pop()
    return
    pass

n, m = map(int, sys.stdin.readline().split())
stack = []
dfs()

 

 

알게된 점

- 기본백트래킹 예제 + 비내림차순 조건이 들어있는 문제

- 비내림차순 조건을 어떻게 넣어야 할지를 좀 많이 고민했다.

- 그 결과 같은 수는 허용하되 다음 수가 작은 경우 리턴하는 조건을 생각했고 stack[-1]이랑 stack[-2]를 사용하기 위해서는 m값이 2 이상이라는 조건 또한 필요하다는 것을 확ㅇ니하고 추가했다.

 

 

 

참고 사이트

 

'전공 > 백준' 카테고리의 다른 글

14889  (0) 2022.10.12
9663  (0) 2022.10.11
15651  (0) 2022.10.10
15649  (0) 2022.10.10
15650  (0) 2022.10.09