less than 1 minute read

문제

#15650 N과 M(2)
Silver4
적용 알고리즘: 백트래킹 알고리즘


풀이 방법

  • 15649 문제와 동일한데 조건만 추가해주면 된다.
  • 사전순으로 숫자가 arr에 담기기 때문에 arr의 가장 마지막 원소와 현재 추가하려는 수를 비교하여 현재 추가하려는 수가 arr[-1] 원소보다 클 때만 append 하면 된다.

코드 흐름

  • 15649 문제와 거의 유사하기 때문에 생략.

코드

def dfs():
    if (len(arr) == m):
        print(" ".join(map(str, arr)))
        return
    for i in range(1, n + 1):
        temp = 0
        if (len(arr) != 0):
            temp = arr[-1]
        if (len(arr) == 0 or temp < i):
            arr.append(i)
            dfs()
            arr.pop()


n, m = map(int, input().split())
arr = []

dfs()

체감 난이도: 3.6/5
그래도 이전 문제 하나 풀었다고 이해는 된다…