arr_num, n = map(int,input().split())
arr = list(map(int,input().split()))
arr.sort()
visited = [False]*arr_num
def combination(n,new):
answer = []
if len(new)==n:
return [new]
for i in range(len(arr)):
if not visited[i]:
visited[i] = True
answer.extend(combination(n,new+[arr[i]]))
visited[i]=False
return answer
answer = combination(n,[])
for a in answer:
print(*a, sep=' ')
풀이
위 문제들은 itertools의 permutations, combinations, product, combinations_with_replacement를 함수로 직접 구현한 코드들이다.