💡문제접근
💡코드(메모리 : 30616KB, 시간 : 56ms)
from itertools import combinations
import sys
input = sys.stdin.readline
N, M = map(int, input().strip().split())
A = list(map(int, input().strip().split()))
A.sort()
li = set(combinations(A, M))
li = sorted(li)
for i in li:
print(*i)
📌백트래킹 풀이 방법(메모리 : 31256KB, 시간 : 44ms)
import sys
input = sys.stdin.readline
N, M = map(int, input().strip().split())
li = list(map(int, input().strip().split()))
li.sort()
visited = [False] * N
res = []
def recursive(start):
if len(res) == M:
print(" ".join(map(str, res)))
return 0
else:
flag = 0
for i in range(start, len(li)):
if not visited[i] and flag != li[i]:
visited[i] = True
res.append(li[i])
flag = li[i]
recursive(i+1)
visited[i] = False
res.pop()
recursive(0)
💡소요시간 : 2m