책을읽자!!

[펌] 마소 벤치마크 8월 - 알고리즘 관련

achivenKakao 2004. 12. 10. 19:58


알고리즘이란 서기 825년 아랍의 수학자인 Al-Khowarizmi의 이름에서 유래한 것으로, 문제를 해결하기 위한 절차나 방법을 말한다. 이 단어는 여러 분야에서 다양하게 쓰이는데, 특히 컴퓨터 분야에서는 오래 전부터 기초 분야로서 반드시 거쳐야 할 코스 중 하나이다. 어떤 문제를 해결해야 할 때 알고리즘은 그 자체로서 해결책을 제시할 뿐 아니라 때로는 문제에 접근하는 방법과 해결 방향을 제시함으로써 효율적인 코딩이 가능하도록 사고를 넓혀준다.
특히 근래에 들어 알고리즘에 대한 관심이 대두되면서 국내에서도 관련 서적이 그 어느 때보다도 많아지고 있다. 이에 알고리즘에 대한 개념을 이해하고, 나아가 활용할 수 있는 능력을 배양하는 데 도움이 될 수 있는 책들을 골라 보았다. 기초를 다짐으로써 프로그래머로서 한 단계 도약할 수 있는 기반이 될 것이다.

도서 선정 기준
근래에 들어 알고리즘에 대한 중요성이 국내에서도 크게 대두되면서 알고리즘에 대한 서적들이 많이 출간되기 시작했다. 따라서 번역서보다는 국내 서적을 우선적으로 선정했으며 오래된 서적보다는 최근에 출간된 서적을 먼저 선정했다. 그러나 오래되거나 번역서일지라도 알고리즘의 개념과 원리에 대해 잘 다루고 있고 예제가 충실하다면 그 서적 또한 선정했다.


평가 기준
이번 북 벤치마크에서는 다음과 같은 기준을 고려해 평가했다.
◆ 알고리즘에 대한 개념과 그 원리를 잘 설명하고 있는가?
◆ 예제와 부록은 충실하여 이해하는 데 도움을 주는가?
◆ 전체 구성이 독자로 하여금 흥미를 유발시키고 있는가?
◆ 독자가 보기 편하게 편집, 구성되어 있는가?
◆ 번역서의 경우, 번역의 수준은 어떠한가?



게임 프로그래머를 위한 자료구조와 알고리즘
Ron penton 저/정보문화사/2004년 1월 발행

알고리즘은 딱딱하다, 따분하다는 선입견이 존재하며, 대부분의 서적들이 그런 경향이 있는 것은 사실이다. 그러나 요즈음 그 선입견을 바꾸려는 책이 많이 출간되고 있는데, 이 책은 그 가운데 하나이다. SDL이라는 API를 써서 알고리즘의 동작을 비주얼하게 보여줄 뿐만 아니라 게임 예제로 흥미를 유발하여 알고리즘에 관심을 가질 수 있도록 돕고 있다. 번역 또한 깔끔하고 매끄러워 잘못된 번역으로 인한 독자의 고충을 덜었다. 제목에서 ‘게임 프로그래머를 위한’이 있어 게임 프로그래밍만을 공부하기 위한 책이라고 보기 쉽지만 내용이나 구성에서 알고리즘에 대한 전반적이고도 일반적인 내용을 다루고 있다. 알고리즘 공부를 시작하고자 하는 C/C++ 초보 프로그래머나 알고리즘을 공부하다가 흥미를 잃어서 중도에 포기한 독자에게 추천할 만하다.

알고리즘이 보이는 그림책
(주)앤크(ANK Co.) / 이영란 / 성안당 / 2004-01-20
판매가: 12,000원10,800원 (10%↓) , 마일리지: 1,080원 (10%)
알고리즘을 공부하기에 앞서 왜 알고리즘을 공부하는지에 대한 해답을 제시하면서 시작하고 있다. 또한 좋은 알고리즘과 나쁜 알고리즘을 비교하면서 왜 좋은 알고리즘이 강점을 갖게 되는지, 무엇이 더 유리한지에 대해 명료하게 설명했다. 즉 알고리즘이라는 것이 무엇을 의미하고, 실제 프로그래밍을 할 때 어떤 중요성을 갖는지 이해할 수 있도록 도와준다.
가장 중요한 특징 중 하나는 그림을 통한 설명이다. 배열은 박스로 나타내고 캐릭터를 통해 이야기하며 포인터는 어딘가를 찍는 화살표로 나타내고 있기 때문에 처음 알고리즘을 배우는 이들에게 흥미를 유발시킨다. 이미지를 이해할 수 있다면 글로 설명한 것보다 훨씬 더 효율적으로 독자가 이해할 수 있으며 알고리즘의 구조 또한 잘 파악할 수 있다. 인상적인 구성으로는, 꼭 알아야 되는 부분을 키포인트로 분류하여 알기 쉽게 나타내고 있는 것과, 이를 중심으로 본문을 엮어 공부한 뒤에는 알기 쉬운 예제들이 나와 있다는 점이다.
초보자들은 예제를 코딩하다가 막히는 부분이 생기면 그 이유를 쉽게 파악하지 못해 고충을 겪는 경우가 많은데, 부록 2~4부에서는 프로그래밍을 하다가 막힐 때의 대처 방법들을 유형별로 분류하여 초보자를 위한 도우미로서의 역할도 톡톡히 하고 있다. 마지막으로 ‘알아두면 약이 되는 알고리즘 상식’ 부분에서 고수들의 여러 노하우들을 전수받을 수 있다. 마치 프로그래머 조언자로서의 역할을 해주고 있는 듯한 느낌을 준다.
C로배우는 알고리즘(1)
이재규 / 세화 / 1996-02-06
판매가: 23,000원18,400원 (20%↓) , 마일리지: 550원 (3%)
개발자들이 알고리즘과 자료구조에 대해 잘 알지 못해서 목표에 도달하지 못하는 경우에 대한 해결 방법, 특히 list, stack, queue, tree, sort, search와 같은 자료구조에 중점을 두고 있다.
C를 통한 코딩과 함께 자료구조와 알고리즘에 대한 개념적 설명을 하는 대부분의 책들과는 달리 C 코딩 이전의 개념 설명을 그림과 함께 명확히 해주고 있는 것은 이 책의 매력이다. 또한 C를 통한 구현 후에 코드를 개선할 수 있는 방법이나 활용 방법을 제시하여 줌으로써, 알고리즘뿐만 아니라 일반적으로 프로그래밍할 때 다각적인 시각으로 문제를 살펴볼 수 있는 능력을 길러준다. 무작정 책에 쓰여진 대로 외워서 따라하는 것보다 좀 더 유연한 사고를 심어주는 것은 또 다른 장점이다. C의 포인터, 배열과 같이 어렵게 느껴지지만 자주 사용하거나 중요한 개념은 재미있는 예시와 함께 설명해, 프로그래밍을 시작한 독자에게는 C에 대한 기초를 다져주는 좋은 길잡이가 되어 준다.
하지만 C의 코딩이 터보 C 2.0에 맞춰져 있어, 초보자들이 읽게 된다면 요즘 주로 사용하는 윈도우 기반 C 컴파일러의 이식성 때문에 고충을 겪게 된다. 또한 개념 설명에 있어 그림이 많은 편이지만 전체적으로 볼 때 구성이 딱딱하고 지루하다. 그렇지만 기본에 충실하고 설명이 잘 되어 있어, 프로그래밍의 입문은 했지만 정작 프로그래밍을 할 때 어떻게 구현해야 할지 막막하게 느낀 적이 있는 독자라면 조금이나마 막막함을 해소할 수 있다.


컴퓨터 알고리즘/C++
SAHNI , Ellis Horowitz , Sanguthevar Rajasckaran / 장직현 / 사이텍미디어 / 2002-09-18
판매가: 28,000원28,000원 (0%↓) , 마일리지: 840원 (3%)
이 책의 가장 큰 특징은 수학적인 면에 중점을 둔 점이다. 많은 공식과 정리들을 나열했으며 그것들에 대한 증명을 대부분 꼼꼼하게 다루었다. 그래서 책에서 제시하는 많은 문제들에 대해 “어떻게 해결하나”에 대한 것뿐만 아니라 “이 방법의 효율성과 명확성, 신뢰성은 어떠한가?”에 대한 관심도 두고 있다.
대학 교재로 종종 쓰일 만큼 방대한 분량으로 알고리즘을 체계적으로 정리·분석했다. 처음부터 9장까지는 기본적인 데이터 구조들, 이를테면 스택이나 큐, 트리, 그래프 등에 대한 설명과 일반적으로 구분되는 알고리즘 방법들이 각 장에서 설명되어 있다. 10장부터는 하한계 이론, NP-complete, PRAM 알고리즘, 메쉬 알고리즘, 그리고 하이퍼큐브 알고리즘 등 좀 더 고급스러운 문제들과 알고리즘에 대해 소개한다.
좋은 프로그램 서적이 그렇듯이 이 책도 많은 수의 예제들을 수반한다. 설명하는 알고리즘에 대한 실제 코드들을 적재적소에 실었다. 그것은 C++로 되어 있으며 조금 복잡하거나 긴 코드는 가상코드로 처리했다. 각 장 마지막에는 연습문제가 있어 어렵고 지루한 이론적인 내용들을 실제 코드에 적용해 볼 수 있도록 했다.
알고리즘을 처음 접하는 초보자들을 위한 책은 분명히 아니다. 많지 않은 공간에 많은 알고리즘들을 담으려다 보니 각 알고리즘의 세세한 부분에 대한 설명이 부족하다. 그렇지만 이론적이고 학문적으로 알고리즘에 접근하고자 하는 독자들에게 권하고 싶다.
C로 구현한 알고리즘
Kyle Loudon / 허욱 / 한빛미디어 / 2000-04-27
판매가: 25,000원20,000원 (20%↓) , 마일리지: 600원 (3%)
제목에서 알 수 있듯이 알고리즘을 C 언어로 구현하고 있다. 특히 함수 포인터를 적극 사용함으로써 C++의 장점인 구현과 인터페이스의 구분을 C에서도 어느 정도 수용하도록 하고 있다. 코드에 자세한 주석이 있어 이해하는 데 도움을 준다. 그렇지만 C에 대한 어느 정도의 지식이 필요하며, 특히 함수 포인터가 자주 사용되기 때문에 함수 포인터에 대한 이해가 필수다. 그러므로 어느 정도 알고리즘에 대해 익숙하거나 적어도 들어본 적이 있는 독자에게 추천한다. 또한 서문에서 밝힌대로 알고리즘의 사실 자체만을 다루고 있기 때문에 세부적인 응용이나 구현 등을 원하는 독자라면 다른 관련 서적과 같이 보기를 바란다.
총 3부 17장으로 되어 있다. 1부는 알고리즘을 하기 전에 다루어야 할 간단한 알고리즘 분석과 포인터 등을 다루고 있다. 2부는 연결리스트, 스택, 큐, 집합, 해시 테이블 같은 자료구조에 대해 설명하고 있다. 3부에는 본격적으로 알고리즘을 다루고 있다. 각 장은 간략한 소개 글과 주제로 시작하며, 실제 애플리케이션에서 어떻게 쓰이는지 간단히 설명하고 있다. 그리고 코드의 인터페이스에 대한 간략한 설명으로 이어지고, 코드의 구현과 각 코드에 대한 분석이 설명되어 있다. 전체적인 내용에서 점차 자세하고 부분적인 내용으로 좁혀가는 구성을 하고 있어, 좀 더 효율적으로 알고리즘에 접근할 수 있도록 도와주고 있다.
설명 부문의 적절한 그림은 알고리즘 이해의 촉매제 역할을 하고 있다. 번역 또한 잘 되어 있어 별 어려움 없이 볼 수 있다. 기본적인 자료구조와 알고리즘을 다루고 있는 다른 책들에서 볼 수 없는 주제도 다루고 있는데, 수치 메쏘드, 자료 압축, 자료 암호화, 기하 알고리즘 등이 그것이다.
출판된 지 꽤 지났지만 기본적인 내용을 충실히 담고 있고 C에 대한 여러 테크닉 또한 배울 수 있다. 또 함수 포인터를 이용한 구현과 인터페이스의 분리를 어느 정도 수용하고 있으므로 C++나 자바 같은 객체지향 언어로 이를 다시 구현해 보는 것도 이 책의 또 다른 묘미라 할 수 있다.


알고리즘(3/E) : Foundations of Algorithms USING C++ PSEUDOCODE
Richard E. Neapolitan / 도경구 / 사이텍미디어 / 2004-03-03
판매가: 28,000원28,000원 (0%↓) , 마일리지: 840원 (3%)
초보 프로그래머들은 대충 눈으로 보고 코드의 길이가 짧다고 판단하는 경우가 많다. 하지만 시간과 효율 면에서 우수한 프로그램을 짜기 위해서는 알고리즘에 대해 좀 더 정확하고 체계적으로 분석해 볼 필요가 있다. 이 책에서는 알고리즘을 설계하고 이를 수학적으로 정확하게 분석하는 방법을 소개하고 있다.
각 장별로는 주제에 맞는 문제를 제시하고 문제의 접근 방법에 대해 분석한다. 이에 맞는 여러 가지의 알고리즘을 소개하고 시간 복잡도를 통해 수학적으로 알고리즘을 서로 비교하고 있다. 가장 큰 특징은 다양한 알고리즘의 소개이다. 기타 내용을 배제하고 오직 알고리즘을 소개하고 이를 분석하는 데에만 중점을 두고 있다. 알고리즘이 나오게 된 배경에서 시작하여 그 알고리즘을 이용하여 문제를 분석할 수 있도록 절차를 설명하고 마지막으로 예제를 통해 이를 적용해 주고 있다. 특히 알고리즘을 설명하고 분석할 때 적절한 그림과 표를 사용하고 있는 점이 이해하는 데 도움을 주고 있다.
또 다른 특징은 실제 C++ 코드가 아닌 가상코드를 사용하고 있다는 점이다. 따라서 C++에 익숙하지 않은 독자들도 쉽게 접근할 수 있다. 저자는 알고리즘을 분석하는 데 중점을 두고 있다. 따라서 알고리즘의 시간 복잡도에 대한 분석에 상당 부분을 할애했으며, 그 과정 또한 자세하게 되어 있다.
부록에는 기본적인 수학적 지식을 담아 독자를 배려하고 있다. 하지만 증명하고 수학적인 설명이 많은 부분을 차지함에 따라 얼핏 수학책 같은 느낌을 주어 수학적 지식이 없는 독자에게는 다소 부담감을 줄 수 있다. 또 역자가 영어를 완벽하게 한글로 번역하려고 하는 과정에서 지나친 번역으로 오히려 어려움을 겪는 부분도 있다.
시중에 많은 알고리즘 서적들이 나와 있지만 알고리즘의 설계와 분석 방법을 체계적으로 이해하기 쉽게 만든 책은 드물다. 이 책은 알고리즘의 분석 방법에 대해 공부하고 싶은 독자들에게 도움이 될 것이다.
알고리즘(FUNDAMENTALS OF ALGORITHMICS)
Gilles Brassard , Paul Bratley / 전문석 / 그린 / 1998-09-03
판매가: 24,000원21,600원 (10%↓) , 마일리지: 650원 (3%)
정말 알고리즘을 배우고 싶은 사람, 더 정확히 말하면 알고리즘의 성능을 분석하고 싶은 사람들을 위한 책이다. 자료구조보다는 알고리즘을 소개하고 그것의 시간 복잡도를 계산하고 비교한다.
내용은 다소 난해하다. 반증법, 수학적 귀납법이나 극한, 급수 같은 기초 이론으로 겁을 주더니, Big Oh 같은 여러 표기법이나 그것들을 이용한 알고리즘 분석에서는 학교에서 수학 공부를 열심히 하지 않은 것을 충분히 후회하게 해줄 만한 내용들로 가득하다. 알고리즘 소개 자체도 Greedy, Divide and Conquer, Dynamic 등의 내용인데, 이것들은 중요한 기법이긴 하지만 기본 서적에서는 잘 나오지 않는 어려운 것들이다. 게다가 중간중간에 있는 증명과 시간 복잡도 계산을 따라가자면 600여 페이지의 두께가 6000여 페이지로 보일지도 모르겠다. 그동안 알고리즘 공부에 대한 경험이 있는 사람들도 확률적 알고리즘, 병렬 알고리즘, 계산 복잡도, 경험적 근사 알고리즘을 접하면 이해하는 데 고충이 따른다.
사실 이 책은 프로그래머를 위한 참고서가 아니다. 서문에서 밝혔듯이 알고리즘을 공부하는 학생들이 보는 교재로 적당하다. 물론 알고리즘을 처음 공부하는 사람에게도 권하고 싶지 않다. 오히려 처음 시작할 때는 표지 예쁘고 편집이 잘 된 책을 권하고 싶다. 그러나 알고리즘을 학문으로 공부하고 연구하는 사람들이라면 이 책은 봐둬야 할 내용이라고 생각된다.
출간된 지 조금 오래돼서 편집이 교과서처럼 답답하고 지루하다. 그러나 이러한 구성과 매끄럽지 못한 번역은 충실한 내용으로 감수할 만하다.


게임 프로그래머를 위한 자료구조와 알고리즘
Ron Penton / 류광 / 정보문화사 / 2003-12-12
판매가: 38,000원34,200원 (10%↓) , 마일리지: 3,420원 (10%)
SDL이라는 API를 이용해서 알고리즘의 동작 원리를 비주얼하게 보여줌으로써 쉽게 이해할 수 있도록 돕고 있다. 또한 게임을 예제로 해 알고리즘에 대해 흥미를 유발시키고 있다.
‘게임 프로그래머를 위한’이라는 제목을 보고 다른 분야의 프로그래머는 볼 필요가 없다고 생각할 수 있으나, 이는 오산이다. 일반적인 알고리즘을 다루고 있고 그에 대한 예제를 게임 프로그래밍으로 하고 있기 때문에 꼭 게임 프로그래밍 분야로 한정할 필요는 없다. 오히려 다른 분야에 관심 있거나 종사하는 독자가 본다면 폭넓게 공부할 수 있는 기회가 될 것이다.
특이하게도 서문이 다른 책에 비해 상당히 길다. 전체적인 내용을 자세히 다루고 있어 나무만을 보지 않고 숲도 같이 볼 수 있도록 배려하고 있다. 부록이 충실한 편이며 SDL에 대한 부문이 있어 SDL에 대해 지식 없이 읽더라도 부담 없이 볼 수 있도록 배려했다. 또한 좀 더 심층적인 내용은 CD에 담겨 있다. 기초적인 부분도 다루고 있지만, C/C++에 대한 기본 지식을 어느 정도 습득한 후에 읽을 것을 권한다. 이 책은 기존 알고리즘 관련 서적에 대한 무료함과 지루함을 느끼는 독자에게 재미있게 알고리즘을 접할 수 있는 기회를 주며, SDL이라는 간단한 API를 같이 다룸으로써 폭넓게 프로그래밍에 입문할 수 있도록 돕고 있다.
쉽게 배우는 실전 알고리즘 & 정보올림피아드 도전하기
강대성 , 하성욱 , 한학용 , 신동석 , 권기항 / 영진.COM / 2002-08-20
판매가: 33,000원26,400원 (20%↓) , 마일리지: 790원 (3%)
알고리즘으로 접근하며 다소 특별한 구성을 한 올림피아드 준비 서적으로, 61가지 문제 해결을 위한 다양한 알고리즘을 제공하고 있다. 전체적으로 전반부에는 문제를, 후반부에는 해답을 제시하는 문제집 형태를 띠고 있다. 전반부에는 영문과 국문으로 표기된 문제 제시, 후반부에는 그에 대한 문제 풀이와 알고리즘 해설을 제공하고 있다. 문제는 ACM 대회나 정보올림피아드 등에서 볼 수 있을 법한 형식으로, 대개 수학이나 실생활 관련 문제를 C/C++ 코드로 구현할 것을 요구하고 있다. 후반부에는 각 문제에 대한 저자가 생각하는 가장 최적화된 풀이를 제공하고 있다. 또 재귀 호출, 동적 메모리 할당과 같은 기본 개념에 대한 설명과 정보올림피아드 정보를 추가 수록하고 있기도 하다. 전반적인 편집 디자인은 깔끔하다. 보통 국내 서적은 영문 철자의 경우 가독성이 떨어지는 인쇄체를 채용하여 원성을 사는 경우가 많은데, 이 책은 국제 대회를 대비하여 문제지 인터페이스에 익숙해져야 할 독자를 위한 배려로 로만 계통의 표준 글씨체를 차용하고 있다. 또 소스코드의 경우 이미 국제 서적에서는 코드를 나타내는 표준 글씨체가 되어버린 쿠리어체를 사용하고 있다.
단점이 있다면, 굳이 중복하여 수록하지 않아도 됐을 영문/국문 표기 문제들이다. 가령 ACM 대회를 준비하는 경우 국문 문제는 필요하지 않을 수도 있다. 주요 독자층인 중고생, 대학생에 맞추느라 이러한 구성을 취한 듯한데, 오히려 이것 때문에 단가가 올라간 것이 아닌가 하는 의심이 든다.
깔끔한 디자인과 다양한 독자에의 배려, 그리고 문제 해결법에 대해 다시 한 번 생각하게끔 해주는 해답은 독자의 문제 해결 능력을 향상시켜 주겠지만, 여타의 올림피아드 관련 서적이 그렇듯이 일반적인 작업에는 적용하기 힘든 알고리즘을 수록하고 있다.


펄로 배우는 알고리즘
Jarkko Hietaniemi , John MacDonald , John Orwant / 서환수 / 한빛미디어 / 2000-11-27
판매가: 32,000원25,600원 (20%↓) , 마일리지: 770원 (3%)
펄(Perl)에 관련된 국내 번역 서적 시장의 사막화 현상에 대해 이 책은 단비가 되어주고 있는 명서이다. 주로 펄에 구현되어 있거나 펄을 이용하여 구현할 수 있는 기초 자료구조를 통하여 알고리즘 문제들을 풀어나가고 있는데, 이 책의 수준은 일반적인 알고리즘 서적의 수준과 비슷하거나 그 이상이다.
전반적으로 펄이라는 언어가 갖고 있는 장점을 최대한 활용하고 있다. 우선 주요 알고리즘에 대해서는 C/C++나 자바로 구현된 소스코드에 비해 짧다. 이는 동적 배열 등에서 다른 언어에 비해 펄에서는 소스코드가 짧아지는 장점에서 비롯된 것이다. 따라서 저자는 자세한 주석이 담긴 코드와 이론 설명을 충실히 할 수 있었다.
대부분의 알고리즘 서적에 실릴 법한 알고리즘의 분량을 유지하면서 여러 특수 알고리즘을 충실한 분량으로 수록하고 있다는 점도 높은 점수를 줄 수 있는 요소이다. 가령 행렬이나 정수론, 암호학, 확률, 수치해석 등 수학적인 알고리즘과 그 해법을 코드로 제시하고 있기도 하다. 펄에서는 다루지 않을 것 같은 게임 알고리즘에 대해서도 간략하게 제시하기도 했다. 그러나 몇몇 알고리즘에서는 외부 개발 라이브러리를 삽입해 사용함으로써, 펄이라는 언어가 모든 알고리즘의 해결을 위한 해법이 될 수 없다는 점을 반증하는 듯하여 아쉽다.
전반적인 편집 방향은 최근의 외국 서적들이 채택하는 표준적인 방식이다. 쿠리어체로 잘 구분되어 있는 소스코드와 표준 글자체로 지정되어 있는 한글의 구분이 잘 되어 있어 역시 오라일리라는 인상을 준다. 또 표준적인 출판 방식에 걸맞게 알고리즘의 주요 설명 부분에는 깔끔한 그림을 삽입하여 독자의 이해도를 높여주고 있다.
펄에서의 일반적인 알고리즘 구현을 필요로 하는 어느 수준 이상의 펄 개발자들에게 추천할 만하다. 비록 최근에는 다른 언어들에 가려 펄 관련 한국어 서적이 큰 인기를 얻지 못하고 있지만, 그래도 펄에 관한 참고 서적을 다양하게 하는 계기가 되고 있다.
C#을 이용한 알고리즘
김태호 / 세화 / 2003-06-20
판매가: 15,000원13,500원 (10%↓) , 마일리지: 410원 (3%)
단순 프로그래밍의 기교보다 기초적인 알고리즘의 능력을 키우는 데 중점을 두고 있다. 언어는 C#을 이용하고 있어 그에 대한 기초적인 설명과 알고리즘 형식을 나열하고 있다. 그러나 책에서 C#의 강력한 점보다 알고리즘의 중요성에 대해 예시를 들며 한층 강조하고 있다. 이런 점에서 딱딱하고 지루함을 느낄 수도 있다.
하지만 구성은 쉽게 꼭 필요한 내용으로 간결하게 했다. 처음에 C#에 대한 기본적인 지식과 간결한 설명, 그 다음은 기본 알고리즘에서부터 수학 알고리즘과 각종 응용 알고리즘으로 설명하고 있다. C#에 대한 설명에서는 C++와의 차이점을 비교하여 설명하고 있다. 다소 C#의 한계도 볼 수 있지만, 배우기 쉬움과 간단함은 앞으로의 가능성을 보여주고 있다. 알고리즘 부분에서는 결론이 들어 있다. C#인가 C++인가보다 저자는 얼마나 알고리즘에 대해 이해하고 있냐를 중요하게 생각하고 있다.
예제는 개념을 간단히 설명할 수 있는 정도이다. 초보자에게도 이해될 만큼 사용하면서도 불필요하게 많이 사용하지 않고 있다. 이는 개념에 대해 이해를 했으면 자발적으로 스스로 구현하는 코더가 되라는 저자의 의도라고 보여진다. 그래서 독자가 능동적으로 참여할 수 있는 기회를 주고 있다.
C#이 다소 생소할지 모르는 사람들을 위한 책인 만큼 C#에 대한 수준 높은 실력을 요구하고 있지는 않다. C++를 익히고 있는 사람은 다소 편하게 익힐 수 있으며, 모르더라도 책을 읽으면서 C# 기초를 익힐 수 있도록 구성되어 있다. 언어를 처음 배우거나 C#을 처음 보는 사람이라도 알고리즘을 익히고자 하는 독자라면 충분히 도움이 될 것이다.


알고리즘의 중요성을 알면서도 지루함을 못 이겨 알고리즘 공부를 도중에 포기하는 경우가 많다. 포기한 후 프로그래밍을 하다 보면 수없이 난관에 부딪치게 되며, 항상 자신이 뭔가 부족하다고 느끼는 경우가 많다. 그래서 다시 알고리즘을 공부하지만 그 어려움과 지루함은 여전히 남을 수밖에 없다. 이런 것은 알고리즘의 딱딱한 성격도 있고 독자의 인내심에도 문제가 있겠지만, 텍스트 위주의 알고리즘 서적 구성 또한 한 몫을 해온 것이 사실이다.
다행스럽게도 근래에 들어 좀더 쉽고 재미있게 알고리즘을 공부할 수 있도록 다양한 시도가 이루어지고 있다. 알고리즘은 이론을 바탕으로 특정 언어를 이용한 구현도 중요하지만 알고리즘에 대한 이론적 통찰과 이해가 선행되어야 한다. 또한 하나의 문제 해결 과정이기 때문에 텍스트를 이용한 설명으로 독자가 쉽사리 그 과정을 상상하고 이해하기에는 한계가 있다. 그러므로 그 과정을 비주얼하게 보여 주는 것은 알고리즘을 이해하는데 도움을 준다. 이번에 선정된 책도 알고리즘에 대한 이해를 돕기 위해 데모를 통해 알고리즘을 비주얼하게 보여 주고 있다.
지금까지 알고리즘의 중요성을 인식하면서도 그 지루함 때문에 알고리즘 공부를 미루었다면 다시 자신에게 맞는 알고리즘 서적을 골라 기초를 다지는 것은 어떨까?