카테고리 없음
[ BOJ / 파이썬 ] 15666 N과M(12)
EEOOOO
2022. 8. 30. 01:48
| 제출 1 |
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
nums = sorted(list(map(int, input().split())))
keep = []
result = set()
def recur(x):
if x == M:
result.add(tuple(keep))
return
for i in range(N):
if not keep or (keep and keep[-1] <= nums[i]):
keep.append(nums[i])
recur(x + 1)
keep.pop()
recur(0)
for res in sorted(list(result)):
print(*res)
: 현재 기준 값을 넘지 않으면 되는데, 이걸 확인하는 방법은 keep배열의 마지막 값(초기에 정렬했으므로 가장 큰 값)보다 크거나 같으면 된다.