4주차에는 **다이나믹 프로그래밍(Dynamic Programming)**에 대해 공부할 예정입니다. dp는 작정하고 어렵게 출제한다면 끝도없이 어렵게 문제를 만들 수 있기 때문에 dp의 핵심개념과 원리를 이해하고 대표적인 유형들을 정복하는게 중요합니다.
4주차는 어떤 문제를 dp로 풀어야하는지, dp식 사고법은 무엇인지 감을 잡는 연습을 꾸준히 할 수 있게 문제를 구성했으니 꼭 반복적으로 풀어보시길 바랍니다.
<aside> ➡️ "다이나믹 프로그래밍(Dynamic Programming)"은 큰 문제를 작은 문제들로 나누어 해결한 후, 그 결과를 저장하여 중복 계산을 줄이는 최적화 기법을 의미합니다.
</aside>
다이나믹 프로그래밍을 사용하는 알고리즘의 주요 특징은 다음과 같습니다:
모든 해결책을 다 탐색해보는 ‘완전 탐색’은 기본적으로 높은 시간 복잡도를 가집니다. 이를 ‘체계적’이고 ‘효율적으로 탐색하기 위해서는 몇 가지 조건이 있어야 합니다.
피보나치 수열로 예시를 들어보겠습니다.