핵심요약
- 복잡한 문제를 간단한 여러 개의 문제로 나누어 푸는 방법
- 간단한 구현, 복잡한 점화식
- 최적의 원리가 성립해야함.
최적의 원리
"어떤 문제의 입력사례의 최적해가 그 입력사례를 분할한 부분사례에 대한 최적해를 항상 포함하고 있으면, 그 문제에 대하여 최적의 원리가 성립한다.”
문제 풀이 순서
- 문제 탐색
- DP 배열에 어떤 값을 저장할 것이고, 인덱스는 어떤 것을 의미할지 정의를 한다.
- dp 벡터를 선언할 때 최소값을 찾을경우 MAX로, 최대값을 찾을경우 MIN으로 선언한다.
- DP식(점화식) 세우기
- 메모이제이션된 부분 문제들의 해를 이용하여 차례로 더 큰 상위 문제의 답을 어떻게 구할지를 고민한다.
- 검증 및 구현(시간 복잡도)
문제 유형
- 결과값들 더하기.
- 결과값들 중 최대, 최소 구하기.
- 배낭 채우기(Knapsack Problem)
문제 추천
https://stonejjun.tistory.com/24
아직 DP 유형에 익숙하지 않아 정리본도 많이 부족하다.
자세하게 공부하고 나서 추후에 보완할 예정이다.
'알고리즘을 위한 간략 정리 > 수학' 카테고리의 다른 글
[C++] 소수 판정(에라토스테네스의 체) (2) | 2023.11.26 |
---|---|
[C++] 수학 함수 (0) | 2023.10.08 |
비트마스킹(Bitmasking) (1) | 2023.10.02 |