알고리즘/백준

[백준 알고리즘] N과 M (11) (Python / 파이썬)

gyujh 2024. 1. 28. 18:16
문제 링크
 

15665번: N과 M (11)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

 

문제 접근

set과 정렬을 해준 뒤 순서대로 함수를 실행해주고 내부적으로 재귀호출을 한다.

 

정답 코드
# 15665번: N과 M(11)

import sys


def func(select):
    if len(select) == m:
        print(*select)
        return
    for i in range(len(a)):
        select.append(a[i])
        func(select)
        select.pop()


n, m = map(int, sys.stdin.readline().split())
a = list(map(int, sys.stdin.readline().split()))
a = sorted(list(set(a)))

for i in range(len(a)):
    func([a[i]])