본문 바로가기

CodingTest/Baekjun Online Judge

[ BOJ / 파이썬 ] 15664 N과M(10)

|  제출 1  |

import sys
input = sys.stdin.readline

N, M = map(int, input().split())
nums = sorted(list(map(int, input().split())))

keep = []
visit = [0]*N
result = set()

def recur(x):

  if x == M:
    result.add(tuple(keep))
    return

  
  for i in range(N):
    if not visit[i]:
      if not keep or keep[-1] <= nums[i] :
        
        visit[i] = 1
        keep.append(nums[i])
        recur(x + 1)
        visit[i] = 0
        keep.pop()
      
      
recur(0)
for res in sorted(list(result)):
  print(*res)

 

: 내가 풀었지만 내가 나를 못 믿겠다. 계속 반복해서 6개째 푸니까..

: N과M(9)와 N과M(8)을 합친듯한 문제이다. 

 

: N과M 시리즈는 쭉 푼 다음에 공식화시켜서 한 번 정리해야 머릿 속에 들어올 것 같다.