💡문제접근
- 중복순열과 중복 제거, 오름차순 정렬을 이용하면 해결할 수 있다.
💡코드(메모리 : 68564KB, 시간 : 1064ms)
from itertools import product
import sys
input = sys.stdin.readline
N, M = map(int, input().strip().split())
A = list(map(int, input().strip().split()))
A = set(product(A, repeat = M))
A = sorted(A)
for i in A:
print(*i)
📌백트래킹 풀이 방법(메모리 : 31256KB, 시간 : 536ms)
import sys
input = sys.stdin.readline
N, M = map(int, input().strip().split())
li = list(map(int, input().strip().split()))
li.sort()
res = []
def recursive():
if len(res) == M:
print(" ".join(map(str, res)))
return 0
else:
flag = 0
for i in range(len(li)):
if flag != li[i]:
res.append(li[i])
flag = li[i]
recursive()
res.pop()
recursive()
💡소요시간 : 3m