Algorithm/백준
[Python] 15657 N과 M (8)
내영잉
2023. 1. 20. 16:21
1. 문제 📚
https://www.acmicpc.net/problem/15657
15657번: N과 M (8)
N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열
www.acmicpc.net
2. 입출력 예 📋
3. 알고리즘 ✅
문제 조건 중 비내림차순이 있었기때문에
고른 수열은 비내림차순이어야 한다.
길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다.
1. 정렬을 해주었고
2. dfs 파라미터로 그 이전 값을 받아, 그 이전 값보다 큰 값들만 append 시켜주었다
4. 소스코드 💻
import sys
input = sys.stdin.readline
N, M = map(int, input().strip().split())
arr = sorted(list(map(int, input().strip().split())))
output = []
def dfs(before, count):
if len(output) == M:
print(' '.join(output))
return
for i in range(N):
# 조건3
if arr[before] > arr[i]:
continue
output.append(str(arr[i]))
dfs(i, count + 1)
output.pop()
dfs(0, 0)