https://www.acmicpc.net/problem/15663
풀이
백트래킹 N과 M 시리즈 문제입니다. 순열 문제이며 사전순으로 출력하지않아도 됩니다.
for문을 유용하게 사용하기 위해 visited로 방문한 숫자를 마킹해주었습니다.
# 15663번 N과 M (9)
n, m = map(int, input().split())
nums = list(map(int, input().split()))
nums.sort()
ans = []
visited = [False] * n
def solve(cnt):
if cnt == m:
print(*ans)
return
temp = 0 # 수열 중복 처리를 위한 변수
for i in range(n):
if visited[i] == False and temp != nums[i]: # 중복된 수열이라면 진행하지않는다.
ans.append(nums[i])
visited[i] = True
temp = nums[i]
solve(cnt+1)
ans.pop()
visited[i] = False
solve(0)
출력결과
'백준 > 백트래킹' 카테고리의 다른 글
[백준][Python] 15651번 N과 M (3) - 코팩 (0) | 2023.04.04 |
---|---|
[백준][Python] 15654번 N과 M (8) - 코팩 (0) | 2022.09.07 |
[백준][Python] 15654번 N과 M (5) - 코팩 (0) | 2022.09.07 |
[백준][Python] 15652번 N과 M (4) - 파이썬 (0) | 2022.09.01 |