본문 바로가기
백준 알고리즘(BOJ)

백준 알고리즘 15657 (N과 M(8)) - python

by Think_why 2019. 10. 16.

[문제] 백준 알고리즘 15657 (N과 M(8)) - python

https://www.acmicpc.net/problem/15657

 

15657번: N과 M (8)

N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다.

www.acmicpc.net

 

N과 M(7)에서 오름차순 조건이 추가된 문제이다.

idx를 적용한 range 조건을 추가하면 된다.

같은 수를 골라도 되므로 idx로 i을 넘겨주어 자기 자신도 포함할 수 있게 한다.

 

[Code]

N, M = map(int, input().split())
L = list(map(int, input().split()))

L.sort()
out = []

def solve(depth, idx, N, M):
    if depth == M:
        print(' '.join(map(str, out)))
        return
    for i in range(idx, N):
        out.append(L[i])
        solve(depth+1, i, N, M)
        out.pop()

solve(0, 0, N, M)
728x90

댓글