https://www.acmicpc.net/problem/15657
15657번: N과 M (8)
N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열
www.acmicpc.net
문제
문제 해석
처음에는 순열을 이용하여 해결하면 된다 생각했지만 자기 자신과 같은 조합을 허용하여 나타내야 하기 때문에 백트래킹을 사용하여 해결해야한다.
코드
def go(start):
if len(tmp) == m:
print(*tmp)
return
for i in range(start, n):
tmp.append(Str[i])
go(i)
tmp.pop()
n, m = map(int,input().split())
Str = sorted(list(map(int, input().split())))
tmp = list()
go(0)
문제풀이
우선 입력받은 배열값을 정렬해준 후 tmp list에 출력할 m 값만큼만 출력하도록 종료조건을 성정하고 append 해준다. 그리고 출력하면 재귀를 종료하고 pop을 통해 계속해서 append가 되지 않도록한다.
'Koala - 12기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/Python] 1463번: 1로 만들기 (0) | 2023.09.16 |
---|---|
[백준/C++] 9251번: LCS (0) | 2023.09.11 |
[백준/Python] 15686번 : 치킨 배달 (0) | 2023.09.10 |
[프로그래머스/Python] 소수찾기 (0) | 2023.09.10 |
[프로그래머스/Java] 타겟 넘버 (0) | 2023.09.10 |