출처: https://meyouus.tistory.com/64 [정보 공유 - For Me For You For Us]
본문으로 바로가기

이번에는 저번 문제랑도 비슷한 것 같지만, 이번에는 모든 경우의 수를 출력하는 것이 목표인 문제였다.

import sys

N, M = map(int, sys.stdin.readline().split())
check_list = [False]*N
output = []

def solve(depth, N, M):
    if depth == M:
        print(' '.join([str(x) for x in output]))
        return
    for i in range(N):
        output.append(i+1)
        solve(depth+1, N, M)
        output.pop()
solve(0, N, M)

모든 경우의 수를 출력하는 것은 생각외로 쉽다. check_list[i]=True 인것을 만들어주지 않으면 된다. 이렇게 된다면 모든 수가 False이기 때문에, 모든 경우의 수에 대해 재귀가 계속 실행이 된다.