Dynamic Programming, DP, 동적 계획법

Dynamic Programming의 조건

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/be4a36a3-c836-4358-a1f0-a581215cfdef/Untitled.png

  1. 최적 부분 구조 (Optimal Substructure)
  2. 중복되는 문제 (Overlapping Subproblem)

DP 알고리즘의 4단계

  1. 해답의 구조를 파악 → 부문제(Subproblem) 나누기

  2. 부문제의 해답을 조합 → 더 큰 문제의 해답을 도출해낼 수 있는 식 마련

    ⇒ 보통 점화식으로 표현

  3. 부문제에서 큰 문제로 적당한 순서에 따라 해답을 계산하여 DP 테이블에 저장, 재사용

  4. 위의 단계들이 원래 문제의 답을 항상 출력함을 증명, 답 리턴

DP 알고리즘의 2가지 방법

최대 합 계산하기

정수 n개의 수열이 A에 주어질 때, 이 수열에서 A[i] + A[i + 1] + ... + A[j]의 합이 최대가 되는 인덱스 i, j를 계산하고, 그 최대 합을 출력하라