순열을 구하는 문제이다.
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)
'Problem Solving > 백준' 카테고리의 다른 글
[BOJ 백준, 삼성 SW 역량 테스트 기출 문제] 14888번 : 연산자 끼워넣기 - Python (1) | 2021.01.04 |
---|---|
[BOJ 백준] 15655번 : N과 M(6) - Python (0) | 2021.01.03 |
[BOJ 백준] 15652번 : N과 M(4) - Python (0) | 2021.01.03 |
[BOJ 백준] 15651번 : N과 M(3) - Python (0) | 2021.01.03 |
[BOJ 백준] 2467번 - 용액 (0) | 2020.10.21 |