Coding/백준
[Python] 백준 15666번 - N과 M (12)
leta
2022. 2. 26. 20:01
문제 https://www.acmicpc.net/problem/15666
15666번: N과 M (12)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
n과 m 처음부터 풀었으면 쉽게 풀 수 있는 문제였다.
(10), (11) 코드 적당히 합쳐서 만들면 된다.
(11) 코드에 고른 수열이 비내림차순이어야 한다는 조건만 추가해주면 되므로,
시작점을 나타내는 변수 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 same != num[i]:
if i >= s:
ans.append(num[i])
same = num[i]
dfs(i)
ans.pop()
n, m = map(int, input().split())
num = list(map(int, input().split()))
num.sort()
ans = []
dfs(0)