문제 링크
15666번: N과 M (12)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
문제 접근
set과 정렬을 이용해서 중복된 수가 없는 오름차순을 만들어주고
순서대로 함수를 호출하고 내부적으로 재귀호출한다.
정답 코드
# 15666번: N과 M (12)
import sys
def func(select):
if len(select) == m:
print(*select)
return
for j in range(len(a)):
if a[j] >= select[-1]:
select.append(a[j])
func(select)
select.pop()
n, m = map(int, sys.stdin.readline().split())
a = set(map(int, sys.stdin.readline().split()))
a = list(a)
a.sort()
for i in range(len(a)):
func([a[i]])

'알고리즘 > 백준' 카테고리의 다른 글
[백준 알고리즘] 1926번: 그림 (Python / 파이썬) (1) | 2024.02.19 |
---|---|
[백준 알고리즘] 16987번: 계란으로 계란치기 (Python / 파이썬) (1) | 2024.01.28 |
[백준 알고리즘] N과 M (11) (Python / 파이썬) (0) | 2024.01.28 |
[백준 알고리즘] 1759번: 암호 만들기 (Python / 파이썬) (2) | 2024.01.25 |
[백준 알고리즘] 6603번: 로또 (Python / 파이썬) (0) | 2024.01.24 |