https://www.acmicpc.net/problem/15657
문제
문제 해석
처음에는 순열을 이용하여 해결하면 된다 생각했지만 자기 자신과 같은 조합을 허용하여 나타내야 하기 때문에 백트래킹을 사용하여 해결해야한다.
코드
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 |