처음 제출한 코드
m, n = map(int, input().split())
array = list(map(int, input().split()))
stack = []
visited = [False]*m
result = []
def dfs():
if len(stack) == n:
ele = ' '.join(map(str, stack))
result.append(ele)
return
for i in range(len(array)):
if visited[i] == False:
stack.append(array[i])
visited[i] = True
dfs()
visited[i] = False
stack.pop()
dfs()
result = list(set(result))
result.sort()
for i in range(len(result)):
print(result[i])
◼ set 자료형을 활용하여 중복 원소 제거
최종 제출 코드
m, n = map(int, input().split())
array = list(map(int, input().split()))
array.sort()
stack = []
visited = [False]*m
def dfs():
if len(stack) == n:
print(*stack)
return
chk = 0
for i in range(len(array)):
if visited[i] == False and chk != array[i]:
stack.append(array[i])
visited[i] = True
chk = array[i]
dfs()
visited[i] = False
stack.pop()
dfs()
◼ 같은 깊이에 있는 원소들에 대해 이미 stack에 추가되었는지 확인하는 변수 chk
stack에 추가된 원소와 같은 값을 가진 원소의 경우, stack에 추가하지 않는다.