[Python] 백준15666 N과 M (12)
문제
예제 입력
코드
import sys
from itertools import combinations_with_replacement
n, m = map(int, input().split())
arr = [x for x in map(int, sys.stdin.readline().split()) ]
arr.sort()
res = sorted(set(combinations_with_replacement(arr, m)))
for lst in res:
for num in lst:
print(num, end=' ')
print()
설명
파이썬을 통해서 사용자로부터 입력받아 조합과 중복 제거를 위해 set을 사용하여 N과 M (12)를 구현했습니다.
정리
import sys
def backt(st):
if st == m:
print(*ans) # ' '.join(map(str, ans))
return
for i in range(len(arr)):
if st == 0 or ans[-1] <= arr[i]:
ans.append(arr[i])
backt(st + 1)
ans.pop()
n, m = map(int, input().split())
arr = list(set(map(int, sys.stdin.readline().split())))
arr.sort()
ans = []
backt(0)
그 외에도 백트래킹알고리즘을 사용하여 해결할 수 있습니다.