https://www.acmicpc.net/problem/15666
백준 15666 "N과 M (12)" 문제입니다.
재귀를 이용해서 풀었고 기본 N과 M 문제에서 추가 조건들을 주면 됩니다.
여기에서는 중복 체크를 해주고 수열이 비내림차순이라는 조건을 추가하면 됩니다.
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
nums = list(map(int, input().split()))
nums.sort()
s = []
check = {}
def dfs():
if len(s) == m:
a = " ".join(map(str,s))
if a not in check.keys():
print(a)
check[a] = 1
return
else:
return
for i in range(n):
if not s or s[-1] <= nums[i]:
s.append(nums[i])
dfs()
s.pop()
dfs()
'백준 알고리즘' 카테고리의 다른 글
파이썬) 백준 알고리즘 | 11724번 : 연결 요소의 개수 (0) | 2022.03.18 |
---|---|
파이썬) 백준 알고리즘 | 2792번 : 보석 상자 (0) | 2022.03.08 |
파이썬) 백준 알고리즘 | 1463번 : 1로 만들기 (0) | 2022.03.04 |
파이썬) 백준 알고리즘 | 15665번 : N과 M (11) (0) | 2022.03.04 |
파이썬) 백준 알고리즘 | 15664번 : N과 M (10) (0) | 2022.03.03 |
댓글