자료 구조와 알고리즘은 단순히 추상적인 개념이 아니다. 자료 구조와 알고리즘에 숙달하면 더 빠르게 실행되면서 메모리도 적게 소비하는 보다 효율적인 코드를 작성할 수 있다. 이는 모바일 플랫폼으로 넘어가며 갈수록 증가하는 데이터 크기를 감당해야 하는 오늘날의 소프트웨어 애플리케이션에서 특히 중요하다.
문제는 이러한 주제를 다루는 자료가 대부분 이해하기 어렵게 쓰였다는 점이다. 글은 수학 용어로 가득 차 있고 수학자가 아닌 이상 도무지 무슨 말인지 알기 어렵다. 심지어 “쉬운” 알고리즘을 표방하는 책마저 독자가 수학 석박사 학위를 취득했다고 가정한다. 결국, 무수한 독자들이 자신은 이러한 개념을 이해할 만큼 충분히 “똑똑하지” 않다고 생각하며 회피한다.
하지만 자료 구조와 알고리즘은 전부 본질적으로 상식선에서 이해할 수 있다. 수학 표기는 그저 특수한 언어이며, 어떤 수학이든 상식적인 용어로 설명할 수 있다. 이 책은 이러한 상식적인 언어로(더불어 많은 그림으로!) 개념을 단순하고 또 단언하건대 재미있게 설명한다.
자료 구조와 알고리즘을 이해했다면 효율적이고 빠르고 간결한 코드를 작성할 준비가 된 것이다. 여러 코드 대안의 장단점을 비교할 수 있으며, 지식을 바탕으로 주어진 상황에 어떤 코드가 가장 알맞은지 결정할 수 있다.
이 책에서는 오늘 바로 활용할 수 있는 아이디어를 엄선해서 개념을 실제적이고 실용적으로 만들고자 각별히 노력했다. 물론 그 과정에서 아주 근사한 컴퓨터 과학도 배운다. 하지만 이 책은 겉보기에는 추상적인 내용을 바로 실행할 수 있게 만드는 책이다. 끝까지 읽으면 더 뛰어난 코드, 더 빠른 소프트웨어를 작성하게 될 것이다.
자료 구조와 알고리즘은 단순히 추상적인 개념이 아니다. 자료 구조와 알고리즘에 숙달하면 더 빠르게 실행되는 보다 효율적인 코드를 작성할 수 있고, 이는 오늘날의 웹과 모바일 앱에서 특히 중요하다. 만일 마지막으로 알고리즘을 마주한 게 대학 수업이나 면접이라면 알고리즘의 진정한 힘을 활용하지 못하고 있는 것이다.
문제는 이러한 주제를 다루는 자료가 대부분 이해하기 어렵게 쓰였다는 점이다. 글은 수학 용어로 가득 차 있고 수학자가 아닌 이상 도대체 무슨 말인지 알기 어렵다. 심지어 "쉬운" 알고리즘을 표방하는 책마저도 독자가 수학 석박사 학위를 취득했다고 가정한다. 결국, 무수한 독자들이 자신은 이러한 개념을 이해할 만큼 충분히 "똑똑하지" 않다고 생각하며 회피한다.
하지만 자료 구조와 알고리즘은 전부 본질적으로 상식선에서 이해할 수 있다. 수학 표기는 그저 특수한 언어이며, 어떤 수학이든 상식적인 용어로 설명할 수 있다. 이 책은 덧셈, 뺄셈, 곱셈, 나눗셈, 지수 외에는 어떤 수학도 사용하지 않는다. 그 밖에 개념은 쉽고 분명한 말로 풀어서 설명하고, 많은 그림을 사용해 즐겁게 이해할 수 있도록 돕는다.
자료 구조와 알고리즘을 이해했다면 효율적이고 빠르고 간결한 코드를 작성할 준비가 된 것이다. 여러 코드 대안의 장단점을 가늠할 수 있으며, 지식을 바탕으로 주어진 상황에서 어떤 코드가 가장 알맞은지 결정할 수 있다.
학교에서 관련 주제를 공부 중이라서 혹은 기술 면접을 준비할 목적으로 이 책을 읽는 독자도 있을 것이다. 물론 이 책이 컴퓨터 과학 기초를 이해하기 쉽게 설명하고 있고 목표를 달성하는 데 크게 도움도 되겠지만, 자료 구조와 알고리즘 개념이 일상적인 프로그래밍에 얼마나 큰 영향력을 발휘하는지 그 진가를 알아봤으면 좋겠다. 오늘 바로 활용할 수 있는 아이디어를 엄선해서 개념을 실제적이고 실용적으로 만들기 위해 특별히 노력을 기울였다.