n개의 자연수 중 m개를 뽑아 '순열'을 만드는 간단한 문제입니다.
DFS 방식으로 접근하여 해결하였습니다.
itertools 라이브러리의 permutations를 사용하면 더 빠르고 간단하게 풀수도 있습니다.
DFS 사용
import sys
n, m = map(int, sys.stdin.readline().split())
def DFS(level):
if level == m:
print(*res)
else:
for i in range(1, n+1):
if ch[i] == 0:
ch[i] = 1
res[level] = i
DFS(level + 1)
ch[i] = 0
ch = [0] * (n + 1)
res = [0] * m
DFS(0)
itertools 라이브러리의 permutations 사용
from itertools import permutations
n, m = map(int, input().split())
permu = permutations(range(1, n+1), m)
for i in permu:
print(*i)