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

나의 풀이
def dfs(path, depth):
if depth == M:
print(' '.join(map(str, path)))
return
for i in range(len(N_list)):
dfs(path + [N_list[i]], depth + 1)
# 입력 처리
N, M = map(int, input().split())
raw_list = list(map(int, input().split()))
# 중복 제거 + 정렬
N_list = sorted(set(raw_list))
# DFS 실행
dfs([], 0)

※ 알아야 할 것
| 방식 | 코드 형태 | 메모리/성능 | 특징 |
|---|---|---|---|
append() / pop() 방식 |
리스트를 직접 수정 | 효율적 (in-place) | 파이썬 스타일 DFS 백트래킹, 고성능 |
path + [arr[i]] 방식 |
새 리스트를 매번 생성 | 다소 느림 (복사 비용 있음) | 직관적이며 side effect(부작용) 없음 |
'Coding Test > 백준-Python' 카테고리의 다른 글
| 백준 / 가장 긴 감소하는 부분 수열 / 11722번 / Python (0) | 2025.05.27 |
|---|---|
| 백준 / 연산자 끼워넣기 (2) / 15658번 / Python (0) | 2025.05.25 |
| 백준 / 차이를 최대로 / 10819번 / Python (0) | 2025.05.22 |
| 백준 / 컴백홈 / 1189번 / Python (0) | 2025.05.21 |
| 백준 / 색종이 / 2563번 / Python (0) | 2025.05.18 |