카테고리 없음

[ 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배열의 마지막 값(초기에 정렬했으므로 가장 큰 값)보다 크거나 같으면 된다.