728x90
반응형
링크: https://www.acmicpc.net/problem/15657
아이디어
- 백트래킹을 이용해 고르는 경우의 수를 찾자
- m개가 골라졌을 때 고른 수를 print하고 return
- 백트래킹의 인자로 고른 수의 인덱스 번호를 넘겨주어 그 인덱스 번호부터 n번째 수 사이에서 또 선택하게 설계
- 위 논리를 적용하는 이유는 비 내림차순으로 하기 위함이니 입력받은 수를 오름차순 정렬해주어 백트래킹 시작
구현
import sys
def back(inx):
if len(tmp) == m:
print(" ".join(list(map(str, tmp))))
return
for i in range(inx, n):
tmp.append(li[i])
back(i)
tmp.pop()
input = sys.stdin.readline
n, m = map(int, input().split())
li = list(map(int, input().split()))
li.sort()
if m == 1:
for i in li:
print(i)
exit()
tmp = []
result = []
back(0)
마무리
- N과 M문제는 가볍게 백트래킹 상기시키는 용도로 참 좋은듯 하다.
- 어렵지도 않고
728x90
반응형
'코테준비 > 백준' 카테고리의 다른 글
[백준] 21736번: 헌내기는 친구가 필요해 - Python (0) | 2023.10.10 |
---|---|
[백준] 1182번: 부분수열의 합 - Python (0) | 2023.10.09 |
[백준] 9465번: 스티커 - Python (0) | 2023.10.08 |
[백준] 11729번: 하노이 탑 이동 순서 - Python (0) | 2023.10.06 |