qor***
2022-08-28

복잡한 수식은 최소화하고 이해에 꼭 필요한 수식만 담고 작동 원리를 단번에 이해할 수 있게 도와주는 다양한 그림과 바로 실행하고 확인할 수 있는 108개 소스 코드를 예제로 제공해 알고리즘의 얼개를 완벽히 이해할 수 있도록 구성했다.
“‘좋은’ 프로그래머가되려면 눈앞의 문제에 적절한 자료구조와 알고리즘을 적용할 수 있어야 합니다.”
책의 앞부분, 지은이의 말에 처음으로 나오는 문장이다. 이 문장처럼 좋은 프로그래머란자료구조와 알고리즘에 대해 잘 알고 있어야 한다. 여기서 ‘좋은프로그래머’는 단순히 코딩을 하는 것을 의미하지 않는다. 주어진문제를 자신의 힘으로 해석하고 어떻게 해결할 수 있는 지를 연구한 후, 이를 실제로 구현하는 일련의과정을 모두 할 수 있어야 한다. 이를 위해서는 자료구조와 알고리즘에 대한 이해가 필수적이다. 자료구조와 알고리즘은 전산학 관련 학과에서는 전공 필수로 꼭 이수해야하는 과목이며, 그 외의 학과에서도 문제 해결력을 향상하기 위해 많이 선택되곤 한다. 컴퓨터가아무리 처리 능력이 빠르다고 하더라도 잘못된 자료구조나 알고리즘을 사용하면 굉장히 오랜 시간이 걸리거나, 잘못된결과 또는 아예 답을 구하지 못하는 경우도 발생하게 된다.
‘이것이 자료구조 + 알고리즘이다’는C 언어를 이용하여 자료구조와 알고리즘을 설명하고 있다. 요즘은Java, Python 등을 이용한 수업이 주로 이루어지고, 관련된책도 많이 나오고 있지만, 자료 구조와 알고리즘은 다룰 때는 C 언어만의장점이 있다. 일단 C언어는 포인터를 이용하여 메모리를 직접다룰 수 있기 때문에 보다 다양한 자료구조를 설계하고 알고리즘을 적용할 수 있다. 물론 포인터에 대한정확한 이해가 뒷받침되어야 하지만, 일단 익숙해지면 굉장히 편리하게 사용할 수 있다. 메모리를 직접 다룬다는 것은 그만큼 문제에 최적화된 방법을 설계할 수 있고,오버헤드를 줄일 수 있음을 의미한다.
이 책은 크게3 파트로 구성되어 있다. 파트 1은 자료구조에 대해 다루는 데, 자료 구조의 가장 기본이 되는 리스트, 스택, 큐와 트리에 대한 내용을 담고 있다. 파트 2는 자료 구조에 대한 이해를 바탕으로 알고리즘을 소개하고있다. 원하는 순서대로 데이터를 정리하는 정렬(Sorting), 많은데이터 중에서 원하는 데이터를 찾는 탐색(Traverse)과 함께 우선순위 큐와 힙, 해시 테이블, 그래프, 문자열탐색에 대해 다양한 알고리즘을 다루고 있다. 파트 3은 알고리즘설계 기법에 대해 알고리즘 성능 분석 방법, 분할 정복, 동적계획법, 탐욕 알고리즘, 백트래킹 순으로 설명하고 있다.
이 책은 13년 전 출간되어 대한민국학술원 우수학술도서로 선정된 바 있는 ‘뇌를자극하는 알고리즘’을 개정한 책이다. 많은 독자로부터 꾸준한사랑을 받아온 만큼 그 내용과 구성이 탄탄하여 대학의 교재로 사용하기에도 부족함이 없다. 좋은 프로그래머가되기를 원한다면 한번쯤 찬찬히 둘러볼 만한 책이다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."