‘그림으로 정리한 알고리즘과 자료구조’는 그림과 함께 수록한 알고리즘 책이다.

표지

책에는 자료구조와 알고리즘에 대한 개괄이 담겨있다. 자료구조의 기본인 배열, 연결 리스트, 스택, 큐, 트리 등과 알고리즘의 기본이라 할 수 있는 정렬과 검색 알고리즘을 살펴보고, 실제로 사용하고 있는 유명한 알고리즘들을 소개한다.

책의 특징이라면 제목처럼 그림을 사용해 쉽게 이해할 수 있도록 유도한다는 점이다. 편집도 꽤 잘한 편이다. 그래서 알고리즘이라고 하면 복잡하고 어렵다고 생각하기 쉬운데, 그걸 너무 딱딱하지 않게 볼 수 있도록 꽤 잘 구성했다. 많이 사용하는 언어 중 하나인 Java와 Python을 이용한 구현 예를 보인 것도 좋다.

그러나 제목처럼 ‘그림으로 정리했다’고 하기는 좀 애매하다. 여타의 알고리즘 책이 보여줬던 삽화 사용에서 크게 벗어나 보이진 않기 때문이다. 알고리즘 책이라면 가능한 그림을 활용한다. 그게 설명을 훨씬 쉽게 하기 때문이다. 오히려 그림을 쓰지 않는 책이 거의 없을 정도다. 그래서 이 책은 만화 정도로 훨씬 더 그림을 적극적으로 활용할줄 알았는데, 원리에 대한 설명이 필요해서 그랬는지 생각보다 그림의 비율이 높진 않았다. 초보자를 위한 다른 알고리즘 책과 비교해도 그렇다.

내용, 분량 때문인지, 설명이 부족한게 꽤 있었다. 예를 들어, KMP 알고리즘 소개가 그렇다. 간단하게 원리와 코드를 소개했는데, 이 알고리즘은 기본 원리만큼이나 구현 방법도 중요하다. 즉, 겹치는 부분이 있음을 판단하기 위한 로직도 중요한데, 그에 대해서는 별 다른 설명없이 바로 코드로 넘어가버리기 때문에 대체 왜 이런 코드를 만든 만든 것인지, 이 코드는 무엇을 얻기 위한 것인지를 그저 유추할 수밖에 없다. 알고리즘 책으로서는 분명 아쉬운 점이다.

문제는 180여 쪽밖에 되지 않는 분량에 너무 여러가지 것들을 담으려고 했다는 거다. 그래서 알고리즘을 자세히 들여다보고 이해할 수 있는 책이라기 보다는, 알고리즘의 기본과 여러 알고리즘들을 살펴보는데 그치고 만 느낌이 든다. 기왕 그럴거였으면 차라리 훨씬 더 만화처럼 가벼운 책으로 만드는게 낫지 않았을까.

내용과 구성면에서 좀 아쉬운 책이다.