✔ 풀이를 위한 아이디어
✔ 핵심 코드
def DFS(visited, array):
if len(array) == M:
print(*array) #이렇게 처리하면 문자열의 요소들 사이에 공백을 포함하여 출력한다.
return
for i in range(N):
if visited[i]:
continue
array.append(i+1)
visited[i] = True
DFS(visited, array)
array.pop()
visited[i] = False
✔ N과 M (10)의 해결 코드
import sys
N, M = map(int, sys.stdin.readline().split())
nums = sorted(list(map(int, sys.stdin.readline().split())))
array = []
visited = [False]*N
answers = set()
def DFS(start, array, visited):
if len(array) == M:
if str(array) not in answers:
print(*array)
answers.add(str(array))
return
for i in range(start, N):
if visited[i]:
continue
array.append(nums[i])
visited[i] = True
DFS(i+1, array, visited)
array.pop()
visited[i] = False
DFS(0, array, visited)
"경험치 복사 버그"
✔ 관련 개념
경험치복사 아 ㅋㅋ