Problem Solving/백준
[BOJ 백준] 15654번 : N과 M(5) - Python
돌돌김
2021. 1. 3. 00:26
순열을 구하는 문제이다.
N과 M(1)이 순열이었는데, 이와 다른점은 N과 M(5)의 경우 순열을 만들어야 할 숫자가 따로 주어진다는 점이다.
문제 조건에서 오름차순으로 출력하라고 했기 때문에 입력받은 숫자를 정렬해주기만 하면, 일반적인 순열을 구하는 것과 동일하다
이번에도 백트래킹으로 풀었다.
n, m = map(int, input().split())
data = list(map(int, input().split()))
data.sort()
checked = [False]*n
result = [0]*m
def dfs(count):
if count == m:
print(*result)
return
for i in range(len(data)):
if checked[i] == True: continue
checked[i] = True
result[count]=data[i]
dfs(count+1)
checked[i] = False
dfs(0)