한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다.
유튜브, 넥플릭스 등 개인 맞춤화 된 추천 시스템이 보편화 되면서 알고리즘이라는 용어가 흔하게 사용하고 있습니다. 프로그래밍에서 알고리즘은 분리될 수 없는 관계이자 점점 깊어지는 관계입니다. 컴퓨터를 전공하게 되면 자료구조부터 여러과목을 통해 알고리즘에 대한 개념을 익혀가게 됩니다.
그로킹 알고리즘은 알고리즘 문제 풀이를 위한 깊은 구현이나 응용을 이야기하는 책은 아닙니다. 알고리즘이라는 세계를 그림으로 소개해주는 책에 가깝습니다. 알고리즘에 있어 가장 기본인 시간 복잡도부터 NP-완전문제까지 다루고 있습니다.
8월의 한빛 서평 도서는 이것이 자료구조+알고리즘이다 with C 언어입니다. 서평 덕에 오랜만에 C언어 코드를 읽는 시간이어서 조금 어색하기도 했지만, 구현과 컴퓨터에서 실제로 어떻게 동작하는지 이해 하긴 좋은 선택이었습니다. ADT부터 해당 자료구조들의 기본 스펙과 기능들을 소개하고 컴퓨터 메모리 상에서 어떻게 작동하고 올렸다가 내리지 등 시스템 적 이해도 동시에 키울 수 있는 책이었습니다. C언어로 코드를 작성해서 단순히 문법을 익힌 수준으로 책의 코드가 다소 어려울 수 있습니다. 포인터를 이용해 메모리를 직접 참조해서 넘기고, 메모리를 할당하기 위해 해당 구조체의 크기를 연산해서 메모리 할당을 하고, 구조체에서 자신을 재귀적으로 참조하는 등 C 기초 이상을 이해를 하고 있어야 큰 무리 없이 읽을 수 있다고 생각이 들었습니다.
전공을 시작 할 때만해도 파이썬은 알고리즘 공부나 대회 준비에 적합하지 않다는 인식이 강했습니다. 제가 가지고 있는 다른 알고리즘 서적들만 해도 C와 cpp가 각 2권씩입니다. 자료구조나 파이썬의 신텍스 슈가 등 때문에 파이썬 자료구조와 알고리즘 책을 시장에서 거의 찾아볼 수 없었습니다.
책이 한 장 한 장 넘어가면서 파이썬이 알고리즘 공부에 별로라는 생각은 편견이라는 걸 다시 느꼈다. 알고리즘에서 중요한 점은 문제 풀이를 위한 논리적인 사고 과정과 사고 과정을 코드로 옮기는 과정이지 구현하는 언어의 문제가 아니었다.