moo***
2022-12-30

복잡한 수식은 최소화하고 이해에 꼭 필요한 수식만 담고 작동 원리를 단번에 이해할 수 있게 도와주는 다양한 그림과 바로 실행하고 확인할 수 있는 108개 소스 코드를 예제로 제공해 알고리즘의 얼개를 완벽히 이해할 수 있도록 구성했다.
이 책은 제목 그대로 자료구조와 알고리즘을 설명한 책입니다. 자료구조나 알고리즘 하나의 주제만으로도 상당히 내용이 많은데 이 두 가지를 모두 담고 있으니 그 책의 분량은 짐작할 수 있듯이 600페이지가 훌쩍 넘어갑니다.
조금 특이하게 생각했던 것은 자료구조라고 하면 떠오르는 리스트, 스택, 큐, 트리를 앞부분에서 다루고는 있었으나 우선순위 큐나 해시 테이블은 알고리즘 파트에서 다루고 있었다는 점입니다. 아무래도 기본적인 자료구조를 응용해서 우선순위 큐의 연산이나 해시 테이블의 처리를 다뤄야 하기 때문에 알고리즘 방식에 더 중점을 둔 것이 아닌가 싶습니다.
이 책의 전신은 ‘뇌를 자극하는 알고리즘’이라는 것을 저자가 서문에서 밝히고 있습니다. 그 책을 읽어본 적은 없지만 리뉴얼된 책이라 그런지 내용이 짜임새가 좋고 탄탄하다는 느낌을 받았습니다. 각 장의 처음에는 주제의 개념을 다루고 있습니다. 개념 설명을 적절한 다이어그램과 함께 쉽게 설명을 해주고 있고 간간이 일상적인 사례와 비유를 해서 내용이 잘 다가오도록 구성이 되어 있습니다.
그다음으로는 조각 코드를 보여주며 개념을 어떻게 구현하는지를 설명합니다. 프러시저 언어를 지향하는 C언어를 통해 구현을 하고 있기 때문에 좀 더 간결한 구현 내용을 확인할 수 있습니다. 자료구조보다는 알고리즘에 좀 더 방점을 맞춰져 있다고 생각이 듭니다.
내용은 점점 심화된 내용으로 진행이 되지만 기본부터 탄탄히 쌓았기 때문에 접근 장벽이 그리 높게 느껴지지 않았습니다. 어려울만한 코드가 눈에 들어오기 시작하니 재미가 오히려 붙는 느낌이 들었습니다.
이렇듯 각 장마다 통일성 있게 구성이 되어 있다 보니 다음 장의 내용도 부담스럽지 않게 받아들일 수 있고 더 흥미로움을 가질 수 있었습니다.
가장 기억에 남는 장은 '탐색'을 주제로 한 부분이었습니다. 탐색의 개요로부터 시작한 내용은 탐색 방법을 폭넓게 다루면서 각각을 상세한 예를 들어 설명을 해줍니다. 또한 C언어로 구현한 부분을 보여줘서 더욱 구체화해줍니다. 이진 탐색을 설명 후 한계점까지 보여줍니다. 그리고 다시 이 한계점을 개선하기 위한 레드 블랙 트리를 설명합니다. 내용 전개의 짜임새가 잘 되어 있어서 이해를 하는 것에 많이 도움이 된 것 같습니다.
취향의 차이일 수도 있겠지만 한 가지 아쉬운 점이라면 각 장의 마지막에는 전체 코드가 등장한다는 점입니다. 개념 설명 중에 구현 코드도 충분히 보여주고 설명을 했기 때문에 굳이 코드를 다 포함할 필요가 있나 싶기도 했고, 부담감을 줄 수 있는 책의 분량을 늘리는 대도 한몫을 하지 않았을까 싶습니다. 예제 코드를 담아 놓은 사이트 주소만 남기더라도 충분할 것 같습니다. 코드 분석은 책보다는 직접 IDE 환경에서 하는 것이 더 효율적인 것 같습니다.
반가운 책이었습니다. 자료구조나 알고리즘을 다룬 책들을 읽어본 적이 있었지만 가장 만족스러운 책이었습니다.
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.