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

 

Hello Coding 그림으로 개념을 이해하는 알고리즘 - 8점
아디트야 바르가바 지음, 김도형 옮김/한빛미디어

 

컴퓨터 개발을 하면서 알고리즘을 학습하는 것은 매우 중요하다. 너무 오래전에 배워서 이미 잊혀진 것들이 있을 수 있지만 개발을 하다보면 다시 알고리즘을 학습해야하는 순간은 종종 찾아온다.

  1. 앱을 통해서 택시와 나를 연결해주고 싶다. 어떻게 현재 위치에서 가까운 기사들에게 알림을 보낼 수 있을까? 
  2. 웹 브라우저의 뒤로가기/앞으로가기는 어떻게 구현해야 하는 걸까?
  3. 영화 추천 서비스는 어떻게 나에게 영화를 추천해주는 걸까?

 

이렇듯 꾸준히 학습을 해야하는 알고리즘은 시중에 책들이 많이 나와 있다. C/C++로 된 책부터 Java, Python까지 다양한 언어로 알고리즘에 대한 학습 서적이 이미 나와있다. 하지만 이런 책들을 구매해서 끝까지 본 책은 얼마나 있을까? 알고리즘은 중요하지만 생각보다 쉽지는 않다.

 

이 책의 첫 페이지를 보면 책의 목표가 명확히 나와 있다. '쉽고', '재미있게', '끝까지' 책을 읽게 하는 것이다. 쉽고 재미있게 그리고 끝까지 책을 읽게 한다는 점에서 매우 공감한다. 내용은 쉽게 잘 풀어나갔고 기술적인 이야기 또한 잊지 않은 책이라고 말하고 싶다. 책을 처음부터 끝까지 읽는데 5시간 정도 걸렸다. 내용이 어렵지 않기 때문에 몰입만 한다면 대부분 하루안에 볼 수 있을 것이다.

 

 

이 책은 그림을 통해서 쉽게 설명하고 있을 뿐 아니라 놓치기 쉬운 부분들을 잘 알려주고 있다. 예를 들면 빅오에 대한 것인데, 빅오는 몇가지 사실을 알고 있어야 이상한 결론에 빠져들지 않게 된다. 아래 내용은 "4장 퀵정렬" 내용을 일부 요약한 것이다. 

  1. 빅오 표기법에서 시간복잡도는 평균을 이야기할 수 있다.
    • 퀵 정렬은 최악의 경우 O(N 제곱)이니 느린편이잖아!라고 오해할 수 있겠지만 평균적으로는 O(NlogN)이다. best, worst, average 이렇게 3가지로 고민해볼 수 있음.
  2. 빅오 표기법은 가끔 상수가 중요해질수 있다.
    • O(N), O(logN) 에 대해서 코드로 작성하여 테스트 해보면 상수 때문에 성능이 비슷하게 보일 수 있다. 하지만 상수를 고려할 수 있는 수준은 데이터가 얼마 없을 때이다. 데이터가 100억개 가까이 된다고 가정을 해보면 정확한 알고리즘 성능을 보여준다.

 

공간 복잡도에 대한 이야기는 없지만 시간 복잡도만 따지고 본다면 초보자를 이해시키는데 부족함이 없다.

 

이 책의 장점 중에 한 가지는 알고리즘 문제를 어떻게 활용해야 하는지 설명해주고 있다는 점이다. 사실 그렇다. 어떤 알고리즘이 있고 어떻게 구현하는지만 알게 되면 잘 활용할 수 없다. 이 책은 매 장마다 문제 상황을 설명하고 알고리즘(또는 자료구조)를 사용해서 어떤 장점을 얻어갈 수 있을지를 설명한다. 책을 몰입하여 읽을 수 있게 도와준다.

 

 

 

아래는 스택에 대한 그림 설명 부분. 마치 선생님이 칠판을 활용하여 직접 설명하고 있는 것처럼 느껴졌다.

 

 

 

매 장 끝부분에 가벼운 팁들이 나온다. 이런 팁들은 개발자들끼리 커뮤니케이션(말빨, 아는척)하는데 큰 도움이 된다고 생각한다. 내용 자체는 전문적이지 않지만 특히 초보자에게는 꽤 쏠쏠한 팁이 될 것이다.

 

 

책 마지막장에 KNN 알고리즘이 나온다. 생각보다 내용이 간단하니 KNN 알고리즘을 추가로 찾아보게 되었다. 알고리즘을 계속 학습할 수 있게 해주는 것, 이 책의 장점이다. 여담이지만 KNN 알고리즘과 더 공부해야할 것들에 대한 책이 나왔으면 하는 바람이 있다.

 

단점을 이야기하면 첫째로 그림과 글자색 때문에 몰입이 잘 되지 않는다. 배경을 빼고 보면 몽땅 파란색이다. 초보자들에게 거부감을 없게 하기 위함인가하는 생각도 들었지만 세련되지 않다고 생각한다. 저자 아디트야 바르가바가 쓴 책 느낌을 살렸으면 어땠을까 하는 생각이 든다.

 

두번째로 "추가로 공부해야할 것들" 내용이다. 장점에 가까운 내용이었지만 일부는 너무 수박 겉핥기 식으로 적어두었다. 조금 더 자세히 적어둔 내용이 있었으면 하는 아쉬움이 있다.

 

마지막으로 이 책은 이런 사람들에게 추천한다.

  • 알고리즘을 한번도 학습하지 않은 사람
  • 알고리즘 책을 사서 수집만 하고 끝까지 읽어본적이 없는 사람 
  • 알고리즘을 초보자에게 알려주고 싶은 사람

한빛미디어 "나는 리뷰어다" 이벤트에 당첨되어 책을 제공 받았음.

 

 

Tags

Read Next

*

*

티스토리 툴바