메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

알고리즘 면접을 위한 동적계획법 입문서

tee***

|

2019-11-20

다이내믹 프로그래밍 완전 정복

다이내믹 프로그래밍(동적 계획법)은 알고리즘을 공부하다 마주치는 첫 번째 큰 장벽이다. 이 책은 알고리즘 공부의 걸림돌을 디딤돌로 만들기 위해 다이내믹 프로그래밍이라는 한 가지 주제만을 철저히 파고든다.

  • 저자 : 미나크시 , 카말 라와트
  • 번역 : 박상은
  • 출간 : 2019-10-04

 

[기초]

 

다이내믹 프로그래밍은 흔히 [동적 계획법]이라고 변역하는 알고리즘 접근 방법론이다. 개발 방법론은 아니다. 문제 풀이 방식에 가깝다. 다이내믹 프로그래밍은 하위 문제를 한 번만 계산하는 상향식 문제 풀이 접근법이다. 따라서 직관적인 재귀 호출보다는 이해하기가 상대적으로 어려운 경우가 많다.

 

[대상 독자]

 

코딩 면접을 앞두고 있는 개발자나 알고리즘 대회 참가를 앞두고 있는 학생을 위한 책이다.

 

[구성]

 

책은 세로 길이가 손바닥을 편친 것만할 정도로 자그마하며, 총 페이지가 220페이지 정도로 아주 얇다. 내용은 재귀 호출의 이해부터 시작하여, 다이내믹 프로그래밍의 이해, 적용 전략, 실전 문제 순으로 구성되어 있다. 다이내믹 프로그램에 빠르게 익숙해지기를 원하는 사람들을 위한 구성이다. 앞에서는 보다 단순한 개념 위주로 설명을 시작하지만, 뒤로 갈수록 페이지를 넘기는 것이 점점 더 어려워진다. 난이도가 올라갈수록 멈추고 생각해야하는 지점이 늘어나기 때문이다.

 

[장점]

 

무엇보다 좋았던 점은 번역의 정확도와 자연스럽게 읽히는 한글 문장의 완성도이다. 그리고 시간 복잡도와 공간 복잡도라는 개념을 이해하지 못하는 초보자들을 위해서, 원서에 없는 기본적인 내용을 먼저 읽어볼 수 있도록 부록에 추가한 점이 좋았다. 또한 책 구성도 하나의 주제에 잘 집중해서 체계적으로 설명을 진행해나간다는 점이 눈에 띈다.

 

[단점]

 

C언어로 씌여진 책이다. 출판사의 깃허브(http://github.com/crapas/dp)에서 파이썬으로 된 코드도 제공하기는 하나, 본문의 설명은 오직 C언어 기준으로만 적혀 있기에, C언어의 기본 문법과 포인터, 메모리, 성능에 대한 기본적인 이해가 있지 않다면 제대로 이해하기가 어려울 것 같다.

 

[후기]

 

업계에 발을 오래 담그고 있음에도 전통적인 프로그래밍, 그 중에서도 면접 대비용 알고리즘 책은 오랜만에 보는 느낌이다. 그래도 다이내믹 프로그래밍에 대한 기본적인 개념들을 이해하고 정리하기에는 좋았다. 맨 뒤 챕터의 문제까지는 다 못풀었지만 말이다. 내 분야가 코드 자체의 성능보다는 외부 요인이 더 많은 분야라서, 더 효율적으로 코드를 작성하기 위해서 꼭 필요한 지식을 너무 잊어버린게 아닌가 약간의 반성도 가져다 준 책이다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?