반응형
https://www.acmicpc.net/problem/15657
15657번: N과 M (8)
N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열
www.acmicpc.net
import sys
ssr = sys.stdin.readline
def sol(idx):
if len(ans) == m:
print(*ans)
return
for i in range(idx,n):
ans.append(num[i])
sol(i)
ans.pop()
return
n,m = map(int, ssr().split())
num = list(map(int, ssr().split()))
num.sort()
for i in range(n):
ans = [num[i]]
sol(i)
어제 풀었던 문제와 흡사합니다. 오히려 이게 더 쉬울거에요.
일단 백트래킹인 것은 동일하구요. 방문처리를 하지 않고 풀면 됩니다. 다만 반복문의 시작 지점을 변경해줘야 원하는 결과를 얻어내겠죠(또는 조건문을 이용해서 첫번째 숫자보다 작은 수는 선택하지 않도록 하는 방법도 있겠네요). 그렇게 하고 길이가 m이 된다면 출력하고 그렇지 않다면 추가하고 재귀 호출을 진행해주면 될 것 같습니다. 재귀 호출이 끝나면 pop해주는 거 잊지 말구요.
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ][Python]11053번 풀이 (0) | 2022.07.21 |
---|---|
[BOJ][Python]10157번 풀이 (0) | 2022.07.20 |
[BOJ][Python]15654번 풀이 (0) | 2022.07.19 |
[BOJ][Python]12928번 풀이 (0) | 2022.07.19 |