풀이
백트래킹 연습용 문제를 하나하나 풀어보면서 감을 익혀보자
이 문제에서 중요한 점은 다음과같다.
- 오름차순
- M개를 고르는 수열
오름차순이기 때문에 정렬 을 먼저 한 다음에 배열에서 순서대로 탐색한다.
재귀함수 를 이용하여 조건에 맞는 경우 정답배열에 한 개 씩 추가하여 배열 원소의 갯수가 M이 되는 경우에만 출력한다.
#N과M (6)
# N개중에 M개 고른 수열
# 오름차순
N,M=map(int,input().split())
lst=list(map(int,input().split()))
def solve(num,start,ans):
if len(ans)==num:
for i in ans:
print(lst[i],end=' ')
print()
return
for i in range(start+1,len(lst)):
solve(num,i,ans+[i])
lst.sort()
for i in range(N):
solve(M,i,[i])