linux***
2022-06-26

파이썬 예제를 실행해보면서 컴퓨터 과학의 핵심 알고리즘과 문제 해결법을 익히는 책
똑똑한 코드 작성을 위한 실전 알고리즘
조지 하이네만 지음 | 윤대석 옮김 | 한빛미디어
(http://www.yes24.com/Product/Goods/109554881)
알고리즘 서적을 리뷰하는 건 오랜만인 것 같습니다. 대학생, 대학원생 신분을 벗어나 IT 개발자, 직장인으로 살아온 이후로 알고리즘 서적을 읽을 기회는 많지 않았습니다. 현재 담당하고 있는 개발 업무와 관련된 도메인 서적을 읽는 시간이 월등히 많았으니까요, 많은 개발자분들이 그럴거라 생각합니다. (직접적으로 꾸준히 알고리즘 최적화 등의 개발을 하지 않는 한 말입니다.)
이 책의 목차는 다른 알고리즘 도서와 유사합니다. 알고리즘의 문제해결 전략, 복잡도, 성능에 관한 글과 주 자료구조, 알고리즘에 대한 설명입니다. 목차 내용은 크게 아래와 같습니다.
알고리즘을 학습할 때 많은 분들이 가장 앞 쪽에 있는 서론을 생략하는 경우가 있는 것 같습니다. 간혹 신입개발자 분들과 대화 시 나타나는 상황이 있습니다. 시간복잡도와 공간복잡도에 대해 대화를 하는 경우 복잡도에 대한 건 들어봤지만 정확히 각 알고리즘 별로 어떻게 계산해야하는지 왜 그런 복잡도가 나오는지 잘 모른다는 것입니다. 특히 본인이 작성한 알고리즘에 대해서 복잡도 계산을 하지 못하는 경우가 있었습니다.
어떤 알고리즘은 NLogN 이고, 어떤 알고리즘은 N이다. 라는건 암기를 하고 있지만 왜 그런지에 대한 이해는 부족한 경우가 많았습니다. 자료구조, 알고리즘에 대해 많이 아는 것도 좋지만 현업에서 본인이 작성하는 코드의 시간,공간복잡도에 대해 계산하고 이해하는 능력도 매우 중요하다고 생각됩니다.
그러한 이유로 이 책의 Chapter 1,2 는 꼭 읽으셨으면 좋겠습니다. 특히 그림과 예제로 쉽게 설명이 되어 있으므로 부담갖지 말고 읽으면 좋을 것 같습니다.
해시, 힙, 정렬 등 여러 알고리즘을 데이터, 코드 기반으로 이해하기는 초보자에게 어려운 일일 수 있습니다. 이 책을 추천하고 싶은 가장 큰 이유는 그림을 통한 데이터, 알고리즘의 흐름을 쉽게 파악할 수 있다는 것입니다.
위 처럼 스택의 내용을 가시화하여 보여주는 그림입니다. 스택 뿐만 아니라 트리, 정렬 등 다양한 알고리즘의 동작원리를 쉽게 이해할 수 있도록 저자는 많은 내용을 가시화 하여 전달하고 있습니다. 또한 알고리즘의 대한 성능을 표로 객관화하여 보여줍니다. 표로 전달하는 방식은 다른 책에서도 발견할 수 있으나, 파이썬 모듈을 이용한 알고리즘 동작방식에 대해서도 표로 제공해 주고 있다는 점은 파이썬을 이용하여 개발하는 분들에게는 조금 더 도움이 되지 않을까 합니다. (저 같은 경우에는, C++로 코드를 재작성하여 공부하였습니다.)
입문자분들이 알고리즘,자료구조 도서를 검색 시 많은 서적이 나옵니다. 내용과 그림, 번역까지 모두 깔끔하여 쉽게 읽을 수 있고 Github에서 코드도 제공하기에 테스트 및 공부하기에도 효율적입니다.
특히 제공되는 연습문제는 쉽게 넘어가는 것 보다는 조금 생각해보고 성장할 수 있는 작은 도움이 될 수 있는 문제들입니다. 꼭 생략하지 말고 풀어보면 더욱 좋을 것 같습니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."