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

한빛미디어

독자리뷰

알고리즘에 마음의 빚이 있다면?

mydrea***

|

2017-05-12

Hello Coding 그림으로 개념을 이해하는 알고리즘

프로그래밍 세계로 초대하는 알고리즘 입문서

  • 저자 : 아디트야 바르가바
  • 번역 : 김도형
  • 출간 : 2017-04-01

난 개발자로서 ‘알고리즘'에 대한 마음의 빚을 가지고 있다. 비전공자 출신으로 프로그래밍 공부를 시작할 때 수 많은 전문가들로부터 알고리즘이 정말 중요하다는 이야기를 귀에 못이 박히도록 들었고, 그래서 그만큼 많은 노력을 들여 공부했지만 쉽사리 손에 잡히지는 않았다.

또 알고리즘 공부는 개발자로서의 역량을 증진시키기 위함 뿐만 아니라, 많은 회사들이 개발자의 역량을 테스트할때 알고리즘에 대한 지식과 코딩 능력을 보기때문에 실용적인 목적으로도 꼭 필요하다.

하지만 항상 ‘알고리즘 공부좀 해야지…’ 라고 생각하면서도 ‘그런 어려운건 시간 많이 날 때 시작해야지..’라는 생각 때문에 다음 생이나 되어도 시작할 수 있을지 의문이 들 정도로 기약이 없었다. (공감가는 개발자들이 많을 것이라 확신한다.) 그래서 정해진 날짜 전까지 리뷰를 써야하는 제약이 오히려 좋은 기회가 되었다.


이 책에서 다루는 범위는 꽤나 방대하다. 가장 먼저 Big-O Notation부터 시작함으로써 이 책이 알고리즘을 정석대로 다룬다는 느낌을 준다. 그리고 Array, Linked List를 소개한 후 Selection Sort와 Quick Sort로 Sorting의 기본을 다룬다. 그리고 Recursion에 한챕터를 할애하면서 자연스럽게 Stack이 등장한다. Breadth First Search를 주제로 Graph와 Queue가 함께 등장한다. BFS와 Graph가 나왔으니 Dijkstra Algorithm은 빠질 수 없다. Greedy Algorithm과 NP-Complete 까지 나온다. 그리고 Dynamic Programming은 상당히 많은 양의 챕터로 구성되어있다. 심지어 머신러닝에까지 손을 대서 KNN 을 소개한다. 이것도 모자라서 ‘더 공부해야할 것들' 이란 이름으로 Tree, Furier Transform, Map Reduce, Hyperloglog, SHA, RSA 등까지 다룬다.

이정도면 목차만 봤을땐 자료구조와 알고리즘의 주요 주제가 이 책 한권으로 전부 정리되는듯한 느낌까지 받는다. 이 책 한권이면 그동안의 빚을 다 갚을 수 있는걸까?


전반부의 Big-O Notation, Sorting, Hash 부분까지는 아직 이전에 공부한 내용들이 선명하게 남아있어서 가볍고 빠르게 넘어갔다. 넘어가면서 느낀건 쉬운 내용도 그림과 함께 설명하느라 지나치게 많은 지면을 할애하는건 아닌가 하는 의구심이었다.

후반부의 BFS, Dijkstra 그리고 대망의 Dynamic Programming 을 거치면서 앞의 의구심이 눈녹듯 사라졌다. 이 주제들은 항상 어려워하던 내용이었는데 앞에서 너무 구구절절하다는 느낌이 여기선 굉장히 친절하게 다가왔다. 단순화된 예제로 알고리즘의 진행을 그림으로 보여주니 이미지가 머릿속에 통째로 들어가버린다. 특히 Dynamic Programming은 이 책에서 가장 공들여 작성한 부분이라는 생각이 든다. DP를 어려워하는 모든 사람들에게 이 책을 입문서로 추천해주고싶다.

이 책의 또 다른 셀링 포인트는 더 심화된 내용, 더 꼼꼼한 공부를 원하는 사람들을 위한 세심한 배려가 녹아들어가 있다는 점이다. 왕초보를 위한 입문서격인 이 책에서 모든걸 소개할 수는 없어도 최소한 직접 찾아가며 학습할 수 있도록 각 챕터별로 심화학습이 가능한 키워드를 빠뜨리지 않고 소개해준다.

이마저도 못내 아쉬웠는지 아예 ‘더 공부해야할 것들'이란 챕터를 만들어서 작정하고 키워드만 소개해주기까지 한다. (이 챕터에는 알고리즘에 대한 설명은 거의 없다.) 내용이 빈약하다고 생각할 수도 있지만 가벼운 입문서에 모든 내용을 담을 수는 없다는 점을 고려하면 오히려 저자의 따뜻한 배려라고 느껴진다.


개인적으로 완독 후 가장 큰 수확은 Dynamic Programming에 대한 자신감이다. 알고리즘의 기본적 토대는 이 책으로 이해했으니 이제 빨리 CLRS 책을 펴보고싶다. 알고리즘에 대한 막연한 두려움에 시달리는 개발자들은 주저말고 짧은 시간을 투자하여 이 책을 읽어보기를 추천한다.

닫기

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