Quiz — Module 06: Dynamic Programming¶
Q1. (Remember)¶
DP 의 두 조건은?
정답 / 해설
- Optimal Substructure — 큰 문제의 최적해가 부분 문제의 최적해로 구성됨.
- Overlapping Subproblems — 같은 부분 문제가 재귀 전개에서 여러 번 등장.
Q2. (Understand)¶
Top-Down (memoization) 과 Bottom-Up (tabulation) 의 차이를 설명하라.
정답 / 해설
- Top-Down : 재귀 + cache. 자연스러운 사고 흐름이지만 함수 호출 오버헤드 있음.
- Bottom-Up : 작은 부분 문제부터 표를 채워나감. 함수 호출 ↓, 공간 최적화 가능.
수학적으론 동등. 실전에서는 자연스러운 쪽으로 작성 후 필요시 변환.
Q3. (Apply)¶
Climbing Stairs (계단 N개, 한 번에 1 또는 2 step) 의 DP 점화식과 답을 적어라.
정답 / 해설
- State:
dp[i]= i 번째 계단까지 도달 방법 수. - 점화식:
dp[i] = dp[i-1] + dp[i-2]. - Base:
dp[0]=1, dp[1]=1. - 결과: dp[N] (Fibonacci 수열).
- 공간 최적화 → 두 변수만 유지 → O(1) 공간.
Q4. (Analyze)¶
DP state 정의가 잘못된 경우의 증상 3가지는?
정답 / 해설
- 답이 달라짐 (틀림) — state 가 부분 문제를 충분히 표현하지 못함 (정보 부족).
- 무한 재귀 / 사이클 — state 변환이 단조 감소하지 않음.
- 중복 / 과대 계산 — state 가 서로 의존성이 있는 차원을 놓쳐 같은 답을 여러 차원에서 셈.
해결: state 에 들어가야 할 차원을 "이 문제를 풀려면 무엇을 알아야 하는가" 로 다시 정의.
Q5. (Evaluate)¶
같은 문제에 (a) DP (b) Greedy 가 모두 가능할 때 어느 것이 좋은가?
정답 / 해설
- Greedy 가 정답이 증명되면 → Greedy. 더 빠르고 간결.
- Greedy 가 반례가 있으면 → DP. 안전.
실무에서는 보통 DP 가 default + 가능하면 Greedy 로 단순화. 면접에서는 둘 다 알고 있다는 신호를 주면 점수 ↑.