백준 15655 파이썬

문제

N 과 M (6)

백준 15655

풀이

백트래킹 연습용 문제를 하나하나 풀어보면서 감을 익혀보자
이 문제에서 중요한 점은 다음과같다.

  1. 오름차순
  2. 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])

결과 정답

좋은 웹페이지 즐겨찾기