*문제 출처는 백준에 있습니다.
문제 제목: N과 M (8) / 15657번 (실버 3단계)
문제 사이트: https://www.acmicpc.net/problem/15657
문제 설명

나의 풀이
def dfs(current, n, m, sequence, start):
if len(current) == m:
print(' '.join(current))
return
for i in range(start, n):
current.append(str(sequence[i])) # 1, 1과 같은 중복 원소 사용을 허용한다.
dfs(current, n, m, sequence, i) # 다음 상태로 이동
current.pop() # 중복되는 수열 방지
if __name__=="__main__":
n, m = map(int, input().split())
sequence = list(map(int, input().split())) # 수열
sequence.sort() # 오름차순으로 정렬
dfs([], n, m, sequence, 0) # DFS 시작

※ 알아야 할 것
백트래킹을 이용한 문제 해결 방식입니다!
소요 시간: 38:41
사유: start 변수를 이용해서 중복 원소 사용을 허용한다는 점을 이해하는게 찾기 어려웠습니다.
'Coding Test > 백준-Python' 카테고리의 다른 글
| 백준 / N과 M (7) / 15656번 / Python (0) | 2025.03.09 |
|---|---|
| 백준 / N과 M (6) / 15655번 / Python (0) | 2025.03.07 |
| 백준 / 부분수열의 합 / 1182번 / Python (0) | 2025.03.04 |
| 백준 / IQ Test / 1111번 / Python (0) | 2025.03.03 |
| 백준 / 동물원 / 1309번 / Python (0) | 2025.03.03 |