공부하는 스누피
사전처럼 바로 찾아 쓰는 알고리즘 본문
사전처럼 바로 찾아 쓰는 알고리즘은 지금까지 구매해 놓고 한 번도 완주할 생각을 못 했던 책이었다. 책장에 꽂혀 있은 지 거의 몇 년이 되어 가는데 제대로 읽어 보지 못했던 것 같아 오랜만에 알고리즘을 복습하는 겸 꺼내 봤다. 책을 보니 몇 년 전에 내가 남겼던 흔적들이 보였는데, 정확히 시간복잡도를 계산하는 부분에서 밑줄과 메모가 끊겨 있었다. 왠지 그렇게 놔 두면 찝찝함으로 남을 것 같아서 제대로 책을 펴고 읽기 시작했다. 책 두께는 제법 두꺼웠지만 종이 재질이 외국 서적의 종이와 비슷해서 가볍고, 쪽수도 403쪽으로 그렇게 내용이 많지는 않았다. 이미 알고 있는 내용도 있어서 그런지 이틀 만에 완독할 수 있었다.
이 책은 제목처럼 사전같이 모든 알고리즘을 담고 있진 않다. 대신 저자가 유용하다고 생각하는 알고리즘들은 한 페이지 지 요약본에 정리되어 있고, 장단점과 변형 버전까지 상세히 소개되어 있다. 책 초반에 정렬 알고리즘에 대해 다룰 때, 삽입 정렬을 다루고 나서 버블 정렬이나 선택 정렬같이 인접한 요소를 교환하면서 정렬하는 방식은 깔끔하게 지나쳐버렸다. 삽입 정렬 말고는 항상 O(N^2)의 시간복잡도를 가져서 잘 안 쓰긴 하지만, 저자는 알고리즘 책답게 효율적이지 않은 부분은 과감히 넘어간다. 균형 트리도 마찬가지로 AVL은 간단한 소개만 하고 Red-Black 트리로 넘어가 버리니, 모든 알고리즘을 깊게 공부하고 싶은 사람은 책 내용이 부족하다 여길 수 있다.
책 후반부에는 인공 지능 게임에 쓰이는 알고리즘이 나오는데, 특정 알고리즘 기법을 사용하는 것보다 극한의 백트래킹으로 문제를 해결하는 것 같았다. 그 다음 챕터에는 심화된 알고리즘이 등장한다. 유일하게 훑어만 봤던 챕터인데, 아직까지는 그 챕터를 모두 이해할 수 있는 수준이 아니라는 것만 느낄 수 있었다.. 책을 처음 샀을 때 느꼈던 한계가 시간복잡도까지라면, 다음에 읽었을 때는 심화도 거뜬히 이해할 수 있을 것 같다는 막연한 자신감이 들었다. 11챕터는 책에서 다뤘던 모든 알고리즘을 정리해 놓은 요약본이다. 책을 다 읽기 전에 한 번 더 복습할 수 있다. 만약 시간이 없다면 11챕터만 훑어 봐도 정렬, 그래프 탐색에 대한 기본적인 알고리즘은 비교할 수 있을 것이다.
이 책은 모든 알고리즘을 담고 있지는 않지만, 반드시 알아야 할 알고리즘은 거의 다루고 있어서 알고리즘을 복습하고자 하는 사람에게 좋은 책이다. 나 또한 알고리즘을 구현하는 데만 충실했어서 원리에 대해 깊게 알진 못했는데, 책을 읽으면서 각 알고리즘의 원리에 대해 더 집중할 수 있었다. 책에서 사용되는 용어들은 대부분 한글화되어 있다. 알고리즘을 처음 접하는 사람이 아닌 전공자라면 용어 부분에서 어색할 수도 있다. 꽤 괜찮다고 생각한 책이지만, 백준에서 BFS, DFS, 백트래킹 문제를 구현 가능한 수준 정도는 되어야 무난하게 읽힐 책인 것 같다. 시간 복잡도에서 책 읽기를 그만 두었을 때의 내 수준이 BFS, DFS를 아예 모르는 정도였기 때문이다.
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=6524533
'IT 도서' 카테고리의 다른 글
토비의 스프링 3.1 (vol.1) (0) | 2022.01.11 |
---|---|
이펙티브 자바 (1) | 2021.05.24 |
모던 웹을 위한 HTML5+CSS3 바이블 (0) | 2021.03.21 |
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (0) | 2021.01.17 |
정보처리기사 시나공, 수제비 (0) | 2020.12.31 |