-
-
Hello Coding 그림으로 개념을 이해하는 알고리즘 ㅣ Hello Coding
아디트야 바르가바 지음, 김도형 옮김 / 한빛미디어 / 2017년 4월
평점 :
많은 친구들이 나에게 의외라고 하는 점 중 하나가 바로 내가 머리 쓰는 걸 정말 싫어한다는 것이다. 더 지니어스, 문제적 남자 같이 생각을 엄청 해서 문제를 해결해야 하는 지적 유희를 소재로 한 예능 프로는 정말 한 차례도 본 적이 없고, 그 흔한 방탈출 게임도 시도해본 적이 없다. 복잡한 문제를 제한 시간 내에 해결해야 하는 압박감과 그 골치아픔이 싫은 것이다.
이런 내가 프로그래밍 공부를 하면서 가장 힘들었던 점은, 이진법을 이해하는 것도 아니고 컴퓨터 작동 원리를 이해하는 것도 아니고, 바로 알고리즘 공부를 하는 것이었다. 알고리즘 얘기만 숨이 턱턱 막히는 알고리즘 울렁증이라고 얘기해야 하려나.
공부를 시도해보지 않았던 것은 아니다. 아주 가끔씩 알고리즘 공부를 해볼까? 마음이 들어 책을 펼쳐들면, 아주 작은 글씨로 빽빽히 적인 글과 코드 사이에서 정신을 잃고 이내 책을 덮어버린 것이 한두번이 아니다. 그 덕에 수학 1단원 집합과 명제 부분만 까맣게 닳았던 것처럼 내 알고리즘 책도 시간복잡도 설명 부분만 줄이 그어있고 아주 깨끗하다.
‘Hello Coding 그림으로 개념을 이해하는 알고리즘’ 이 책은 내가 처음으로 끝까지 읽어낸 첫번째 알고리즘 책이다. 제목부터가 왠지 쉽게 가르쳐줄 것 같은 느낌이 팍 오더니, 역시 책을 쓱 훑어보니까 큼지막한 글씨에 그림이 엄청 많아서 편한 마음으로 도전!할 수 있었다.
지금까지 봤던 알고리즘 책은 보통 처음에 알고리즘의 시간복잡도 표기법에 대해서 설명하고, 그 이후 각 알고리즘에 대해서 설명한다. 기본적으로 여러가지 정렬 알고리즘을 다루고, 그 다음에 brute force, 너비우선탐색/깊이우선탐색, DP 등등 유명한 알고리즘에 대해서 원리와 함께 코드를 보여주며 설명한다.
이 책도 기본적으로 이런 흐름을 벗어나지는 않는다. 처음 알고리즘을 공부할 때 기본적으로 이해하면 도움이 되는 이진 탐색, 빅O 표기법, 자료구조 등을 다루면서 내용을 시작한다. 책을 보면서 굉장히 마음에 들었던 것이 바로 이 첫 부분이었다.
사실 알고리즘 공부를 조금 하긴 했지만, 시간복잡도에 대해서 그냥 아, 이런 게 있나보다 하고 넘어가 버리고 A라는 알고리즘의 시간복잡도는 O(n)이야, B 알고리즘은 O(n^2)이야, X 알고리즘은 O(logN)이야 하는 설명을 특히, O(logN), O(nlogN)에 대해서 이해 못하고 넘어갔었는데, 어떤 알고리즘, 이진 탐색을 적용할 수 있는 알고리즘이 O(logN)을 따르는 이유를 드디어 이해할 수 있었다! 별 거 아닐 수도 있지만 개인적으로는 엄청난 깨달음이었다.
이후 책에서 다루는 정렬, 해시테이블, 너비우선탐색, DP 등등도 기본적으로 굉장히 차근차근히 친절하게 설명해준다. 각 알고리즘을 간단한 예제를 통해 독자와 함께 문제를 해결할 수 있는 알고리즘을 생각해내는 과정을 공유한다는 느낌이 들었다. 무엇이든 처음 배우는 사람에게 설명을 할 때는 이게 왜 이렇게 되는지 이유와 원리를 찬찬히 설명해주는 게 굉장히 중요한데, 알고리즘을 처음 배우는 사람들이라면 이 책을 통해서 충분히 감을 잡을 수 있을 것이라고 확신한다.
물론, 심화된 알고리즘 학습을 원하는 독자는 이 책을 선택하는 것이 좋지 않다. 말했듯 기본적으로 Target 독자가 알고리즘을 처음 공부해보려고 하는, 프로그래밍에 대한 지식이 많지 않은 사람이기 때문에 각 챕터의 내용이 알고리즘의 원리, 어떤 식으로 구현하는지, 어떤 경우에 해당 알고리즘을 사용하는 것이 좋을지에 대한 가이드 정도에 그친다. 다양한 알고리즘의 개념이 잡혀있고, 좀 더 심화된 학습을 원하는 독자는 다른 책을 찾아보시기를 권한다.