알고리즘 문제
다이나믹 프로그래밍 문제를 풀면서 느낀 것
als982001
2024. 2. 4. 19:32
다이나믹 프로그래밍 문제를 풀면서 느낀 것이 있다. 문제 풀이의 유형이 크게 재귀 함수를 이용하는 방법과 반복문을 이용하는 방법으로 나뉜다는 것이었다. 물론 모든 문제가 이런 것은 아니며, 또 문제를 푸는 사람에 따라 다른 방식을 이용할 수도 있을 것이다. 어쨌든 내가 문제를 풀 때에는 크게 두 가지 유형으로 나뉘는 느낌이었다. 그래서 이 두 유형의 차이점을 간단하게 기록하려고 한다.
1. 재귀함수
- 큰 문제를 작은 문제로 나누어 해결하는 방식
- 복잡한 문제에서 시작해 딱 필요한 하위 문제만을 해결하기 위함
- 스택 오버플로우같은 문제가 발생할 위험이 있음
- 피보나치 수열, 최소 편집 거리 등, 재귀적 구조가 명확한 문제에 적합
2. 반복문
- 작은 문제부터 시작해 점차 큰 문제를 해결하는 방식
- 초기 상태 설정이나 반복 로직 구성하기 어려울 수 있음
- 동전 교환, 배낭 문제 등, 초기 조건에서 출발해서 점진적으로 해를 구축해나가는 문제에 적합
재귀함수 방식 예시 문제
반복문 방식 예시 문제
- 계단 오르기 (https://www.acmicpc.net/problem/2579)