Algorithm/BaekJoon

백준 22.01.28. 15652번 - N과 M (4)

HappyFrog 2022. 1. 28. 16:08

import sys

arr = []


def DFS(idx, n, m):
    if len(arr) == m:
        sys.stdout.write(" ".join(map(str, arr)) + "\n")
        return

    for i in range(idx, n + 1):
        arr.append(i)
        DFS(i, n, m)
        arr.pop()


N, M = map(int, sys.stdin.readline().split())

DFS(1, N, M)
  • DFS를 활용합니다.
  • 하지만 유의해야할 점이 있는데, 비내림차순(인덱스가 커 질수록 요소들이 같거나 커짐)이므로 시작인덱스를 정해주는게 좋습니다.
    • => 시작인덱스를 정해주면 해당 검색경로에 나오는 모든 값을 다 사용할 수 있기 때문입니다.
    • 따라서 재귀를 통해 인덱스가 증가하며 비내림차순 재귀함수가 완성됩니다.
  • 이를 적절히 출력해주면 됩니다.