CS log
[백준] 15663 : N과 M 본문
https://www.acmicpc.net/problem/15663
import sys
def dfs(n,tlst) :
if n==M : # 종료조건
ans.append(tlst) # tlst : 현재까지 만들어진 순열
return
prev = 0 # 중복 안하기 위해서 설정한 값
for j in range(N) : # 주어진 리스트에서
if v[j] == 0 and prev != lst[j] :
# 숫자가 이미 사용 안했는가? + 중복 확인
prev = lst[j] # 이전 숫자와 같지 않은 경우만 선택해서 중복 방지
v[j]=1 # 숫자를 선택했으므로 방문 상태를 1로 설정
dfs(n+1, tlst+[lst[j]]) # 백트래킹
v[j] =0 # 다른 순열 탐색 초기화
N,M = map(int, input().split())
lst = sorted(list(map(int, input().split())))
ans = []
v = [0]*N
dfs(0,[])
for lst in ans :
print(*lst)
참고
https://www.youtube.com/watch?v=2Z7t0Prt2ng