onedayi***
2019-12-15

다이내믹 프로그래밍(동적 계획법)은 알고리즘을 공부하다 마주치는 첫 번째 큰 장벽이다. 이 책은 알고리즘 공부의 걸림돌을 디딤돌로 만들기 위해 다이내믹 프로그래밍이라는 한 가지 주제만을 철저히 파고든다.
<들어가며>
학부 프로그래밍 수업 시간 초반에 나오는 것이 재귀함수이다. 보통은 팩토리얼을 구하는 방식으로 소개된다. 하지만, 나중에 프로그래밍을 깊게 배우게 되면, 재귀함수를 얼마나 조심히 써야 하는지를 배우게 된다.
하지만 개발자 생활을 15년 정도 해왔는데, 현업에서 재귀함수를 사용하는 경우는 많지는 않았다. 웹개발이 위주였는데백엔드 쪽에서 아주 가끔 쓰곤 했다. 하지만 실제로 팀원이 개발한 것을 보니, 이론을 제대로 공부 안했을 때 프로그램의성능이 얼마나 나빠질 수 있는지를 뼈져리게 느끼게 되었다. 그 뒤로 이러한 책을 종종 읽곤 한다.
<추천 대상>
A. 취업이나 이직을 준비하며 코딩 면접을 준비하는 사람
B. 서버 개발이나 백엔드 개발을 많이하며, 프로그래밍 시 성능이나 메모리 사용을 많이 고려해서 개발해야 하는 사람
<요약>
Part 1. 재귀호출
재귀호출에 대해서 설명을 한다. 점화식, 팩토리얼, 하노이탑, 피보나치수열 등의 많이 쓰이는 예제로 설명을 한다. 추가로 재귀호출을 할 때 메모리가 어떻게 쓰이는 지에 대해서도 설명을 한다. 실제 현업에서 개발을 하게 되면 성능만 생각할게 아니라 메모리 사용량에 대해서도 크게 생각해야 한다.
Part 2. 다이내믹 프로그래밍
다이내믹 프로그래밍의 개념에 대해서 설명한다. 피보나치 수열을 예로 들어 재귀, 다이내믹 프로그래밍, 메모 전략을 설명한다.
Part 3. 실전
Part 1, 2에서 배운 개념을 바탕으로 실전 예제를 위주로 설명을 한다. 여러 가지 예제를 들어가며 쉽게 설명한다. 앞의 1, 2파트에서 이론적으로 이해가 덜 갔던 부분들도 실제 예제를 보면서 이해될 수 있다.
<마치며>
항상 그러하지만 학부 때 이론적으로 배운 것이 현업에서 얼마나 도움이 될까 고민하곤 한다. 하지만 실제 고성능을 요구하는 프로그래밍을 해야 하는 경우에는 이론적으로 공부했던 내용이 크게 도움이 되곤 한다. 이러한 면에서 성능을 고민해야 하는 사람들에게는 큰 도움이 될 것이라 생각한다.