본문 바로가기

CodingTest/Baekjun Online Judge

[ BOJ / 파이썬 ] 15665 N과M(11)

|  제출 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):
      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)

 

: N과M(10)응용 문제정도이다. 

: 정말 단순하게 백트래킹 풀이하고, set로 중복 제거를 해줬다.