Coding/백준
[Python] 백준 15664번 - N과 M (10)
leta
2022. 2. 26. 19:10
문제 https://www.acmicpc.net/problem/15664
15664번: N과 M (10)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
n과 m (9) 에서 고른 수열이 비내림차순이어야 한다는 조건만 추가로 고려해주면 되는 문제이다.
시작하는 부분을 s 변수에 넣어 현재 값 i 가 시작값인 s 보다 크거나 같은 경우에만 재귀를 돌게끔 하였다.
import sys
input = sys.stdin.readline
def dfs(s): #s: start
if len(ans) == m:
print(*ans)
return
same = 0
for i in range(n):
if not visited[i] and same != num[i]:
if i >= s:
visited[i] = 1
ans.append(num[i])
same = num[i]
dfs(i)
ans.pop()
visited[i] = 0
n, m = map(int, input().split())
num = list(map(int, input().split()))
num.sort()
ans = []
visited = [0] * n
dfs(0)