innur***
2021-05-24

노트에 직접 알고리즘 문제 해결 과정을 쓰면서 알고리즘과 자료구조의 개념을 이해하는 학습법 안내 도서
쓰면서 익히는 알고리즘과 자료구조
자료구조나 알고리즘 도서를 떠올리면 오래전부터 몇 권의 도서를 읽었기 때문에 공통된 목차의 포맷적인 부분이나어떤 내용을 다룰지가 예상되는 부분이 어느 정도 있다. 그럼에도 불구하고 자료구조와 알고리즘 도서를읽는 것은 즐겁다. 특히 근래에 출간되는 도서들은 나름의 특색이 있고 저자들의 노하우나 공략 포인트를담고 있어서 읽는 재미가 있다. 다른 한편으로는 분명 실무에 많이 사용되고 있으나 아직도 정복하지 못한부분이 많이 있기 때문에 배움의 관점으로 얻는 즐거움이 있다.
쓰면서 익히는 알고리즘과 자료구조는 두가지 의외의 부분이 있었는데, 커널과BSP 경력을 가진 저자가 파이썬을 기반으로 자료구조와 알고리즘을 다웠다는 점과 상당히 책이 얇은 책이다…라고 생각을 했는데 370 페이지가 넘는다는 점이다. 후자에 대해서 말을 하자면 이렇게 얇은 책이면 특정 자료구조나 알고리즘만을 다룰 것이다…라고 예상을 했는데 의외로 많은 부분은 다루고 있고, 이것은 목차만봐도 대부분의 자료구조를 다루고 있지 않는가…
1. 배열(Array)
2. 문자열(String)
3. 연결리스트(LinkedList)
4. 스택(Stack)과재귀(Recursion)
5. 큐(Queue)
6. 트리(Tree)
7. 동적 프로그래밍(DynamicProgramming)
8. 정렬(Sort) 알고리즘
무엇보다 이 책의 특징은 “알고리즘 설계 캔버스를 작성하며 배우는알고리즘 문제 해결 전략”라는 부제에 맞춰 문제해결에 대한 다양한 아이디어를 중점으로 서술하고 있다는부분이고, 이것을 위해서 저자는 알고리즘 설계 캔버스를 구성하자고 제안하고 있다.
이것은 Constraints와 Ideas,Complexities, Test cases와 코드를 이용하여 구성하고 있다. 매 챕터에서단순히 자료구조를 배우고 마무리 하는 것이 아니고, 문제 해결을 다양하게 접근해보자, 다양하게 접근하기 위해서 설계 캔버스를 작성하여 효율성 높은 해결 방법을 도출해보자는 내용이다.
가령 가장 처음 나오는 두 수의 합 찾기에 대해서는 시간 / 공간복잡도를 구성해보고 해당 아이디어를 코딩하는 것으로 시작해서, 또다른 접근 방법으로 해시 테이블을 사용하는방법을 제안한다. 앞서 말했듯이 근래의 자료구조/알고리즘도서는 자신만의 특색을 갖추고 있는 경향이 있는데, 이것이야 말로 이 책의 특색이자, 저자가 포커스해서 독자에게 전달하고자 했던 의도일 것이고 그제서야 서문에서 밝힌 지은이의 말에 많은 공감되었다.
장점은 문제 해결에 대해서 다양한 방법을 생각하고 시도해보도록 제시하는 내용의 흐름으로 본문을 구성한 점이 너무좋았습니다. 익숙히 알고 있는 자료구조에 대해서 이러한 플롯으로 다양한 시도를 유도하는 저자의 의도가느껴져서 번역서가 아닌 국내 저자에 의해서 이러한 도서가 쓰여졌다는 점이 너무 좋았네요. 말하기는 애매하지만, 자료구조와 알고리즘의의 A-to-Z를 기대하고 본 도서를 선택했다면 목적과는 부합되지 않았을거라는 생각이 듭니다.
자료구조와 알고리즘이 나름 방대한 분야여서 비록 자료구조에 익숙하더라도 이 책의 의도대로 다양한 방법으로 문제해결을시도하려고 한다면 읽는 즐거움을 느낄 수 있는 책이었습니다.
"한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."