In***
2022-12-30

복잡한 수식은 최소화하고 이해에 꼭 필요한 수식만 담고 작동 원리를 단번에 이해할 수 있게 도와주는 다양한 그림과 바로 실행하고 확인할 수 있는 108개 소스 코드를 예제로 제공해 알고리즘의 얼개를 완벽히 이해할 수 있도록 구성했다.
세상이 많이 변하고, IT는 그 세상의 속도 보다 항상 몇 발자국 더 빨리 가지만, 그래도 개발을 한다면 변하지 않는 것이 있습니다.
바로 자료구조와 알고리즘 그리고 프로그래밍 언어인데, 개발을 시작하는 모든 사람들이 최신 개발 언어의 튜토리얼 부터 시작할 수도 있지만, 깊이 있는 개발자가 되기 위해서는, 결국 자료구조와 알고리즘을 공부해야 한다고 생각합니다. 물론 파이썬을 한다면 튜플, 리스트, 딕셔너리 같은 자료형이 더 익숙하겠지만, 기본 자료구조인 리스트, 스택, 큐에 대한 이해는 더 중요하다고 생각합니다.
그래서 자료구조와 알고리즘에 대한 책은 상당히 많은데, 이번에 리뷰할 책은 한빛미디어에서 2022년 8월에 출간한 '이것이 자료구조+알고리즘이다 with C 언어' 입니다. 사실 C언어는 이제는 대중적인 언어가 아니게 되었지만, 기본이 튼튼하기 위해서는 꼭 배워야 하는 언어라고 생각합니다.
C언어를 배울 때 '포인터' 전과 후로 러닝커브가 급격히 달라지는데, 그럼에도 불구하고 C언어가 중요한 이유는 자료구조와 알고리즘을 '직관적으로' 배울 수 있는 최적의 언어이기 때문입니다.
이 책의 좋은 점은 상세한 설명과 깔끔한 그림으로 이해를 돕는다는 점입니다. 더욱이 다양한 예제로 초보자 혹은 학부때 이미 자료구조 수업을 들었던 분들도 다시 탄탄하게 지식을 다지기에 좋습니다.
리스트 뒤에 나오는 스택에서도 노드 삽입 연산과, 노드 제거 연산, 그리고 그 스택을 응용하여 사칙연산 계산기도 만들어 보면서 자료구조에 대한 내용을 다방면에서 알기 쉽게 설명해줍니다.
파트 2에서는 알고리즘에 대한 설명이 나옵니다.
사실 알고리즘이라고 하면 정렬 알고리즘에 제일 먼저 떠오르고, 이 역시 C언어를 배울 때 가장 먼저 배우는 개념중에 하나입니다. 파이썬에 익숙하다면 단순히 .sort() 라는 명령어로 해결 될 일을 어째서 더블for문을 쓰면서 해야 하는지 의문이 들 수도 있지만, 내부 구조를 알고 쓰는 것과, 모르고 쓰는 것은 나중에 단순정렬이 아닌 특수한 조건에 맞춰서 정렬할 때 그 효과를 톡톡히 누리게 됩니다.
그리고 개인적으로 이 책의 묘미는 챕터11인 알고리즘 성능 분석과 12장인 분할정복 이라고 생각합니다. '알고리즘 성능 측정 기준' 부터 시작하여 알고리즘 수행시간 분석을 위하여 접근표기법도 설명해 줍니다.
우리가 기껏 알고리즘을 개발했더 하더라도 그 알고리즘의 우수성을 표현하지 않는다면, 그건 아무도 쓰지 않는 알고리즘이 되고 말 것입니다.
책의 전체 장수는 644장입니다. 그 만큼 방대하고도 다양한 내용을 담고 있습니다. 그리고 술술 넘겨보면서 읽을 수 있는 책은 아닙니다. 하지만 어렵게 공부한 만큼, 그 후에 데이터 엔지니어로 가던가, 데브옵스로 가거나, 풀스택 개발자가 되는 등 어디로 진로를 정하더라도 풍성한 뿌리로 내릴 수 있는 양분이 되리라 생각합니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."