프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략, 구종만 지음, 인사이트, ISBN 978-89-6626-054-6
<알고리즘 문제 해결 전략>은 새로운 알고리즘 책입니다. 종이에 적힌 의사코드를 외우며 알고리즘을 배우는 대신, 해당 알고리즘을 적용해 푸는 프로그래밍 문제들을 직접 풀어보며 알고리즘 설계 기법과 자료 구조에 대해 배울 수 있도록 구성되어 있습니다. 풀이 과정은 독자가 글쓴이의 머릿속에서 일어난 문제 해결 과정을 최대한 이해할 수 있도록 설명되어 있습니다. 그래서 독자는 예전에는 피상적으로 이해하던 알고리즘과 자료 구조에 대해 이들이 어떻게 사용되는지, 왜 그렇게 되었는지에 대해 직관적으로 이해할 수 있게 됩니다.
이 책이 구체적으로 어떻게 다른가에 관해서는 서문: 프로그래밍은 어렵다를 참조하세요.
글쓴이 구종만은 연세대학교 컴퓨터과학과를 졸업한 후 이노티브와 NHN에서 소프트웨어 엔지니어로 일했고, 현재는 뉴욕의 헤지펀드에서 알고리즘 트레이딩 개발자로 일하고 있습니다. 2007년부터 한국 프로그래밍 대회 참가자 커뮤니티인 알고스팟의 운영에 참여하고 있습니다.
수상 경력:
문제 해결 기법을 학습함에 있어 이보다 더 좋은 책은 나오기 아주 어려울 것이다. 프로그램을 통한 문제 해결이 어려운 데에는 크게 두 가지 이유가 있다. 첫째는 문제를 해결하는 전략을 찾아 내는 것이고, 둘째는 그것을 프로그램 코드로 오류 없이 옮기는 것이다. 이 책에서는 다른 책들과는 달리 이 두 가지에 대해 고루 다룬다. 어떠한 사고의 흐름과 논리에 의해 그러한 전략이 도출되었는지와 그것을 구현 수준으로 옮기는 과정에서 발생할 수 있는 문제점들에 대해 상세히, 그러나 명료하게 적고 있다.
쉬운 주제에서부터 시작해 현실적인 응용이 가능한 어려운 문제들까지 폭넓게 다루는 이 책을 통해 성실히 학습한다면 프로그램 구현 능력의 향상과 문제를 보는 눈, 그리고 발생할 수 있는 오류를 한 발 앞서 생각하고 방어적으로 대하는 자세까지 기를 수 있음이 확실하다. 이것들이 프로그래머로써의 삶에 큰 도움이 되는 것은 명백한 사실이다.
류원하 (KAIST, 2009년 한국 대학생 프로그래밍 경시대회 우승)
집필 기간동안 지켜보면서 Duke Nukem Forever 개발기간보다 오래 걸릴 것 같았는데 결국 나오고 말았다. Duke Nukem Forever 개발 기간에 비해 한참 모자란 집필 기간이었지만, algospot.com의 운영진 등을 주축으로 구성된 베타리더들을 통해 검증받은 이 책은 Duke Nukem Forever와 비교할 수 없는 완성도를 자랑한다.
이 책에는 글쓴이의 프로그래밍 경시대회에 대한 노하우가 모두 담겨있다. 현재 경시대회에 나오는 문제들은 대부분 이 책에 나와있는 알고리즘을 토대로 하고 있기 때문에 경시대회를 준비하는 사람들을 위한 최적의 책일 것이다. 아마 여기 나온 내용만 제대로 이해하고, 연습 문제를 모두 풀 수 있다면 상위권에 입상할 수 있을 것이다.
물론 경시대회를 위해서만 이 책을 읽어야 하는 것은 아니다. 이 책에서는 알고리즘에 대한 설명 뿐만 아니라 기존 알고리즘의 동작에 대한 검증이나 최적화된 코드 등을 함께 보여준다. 이런 것들은 큰 소프트웨어 프로젝트의 세부 로직에서 사용되는 다양한 알고리즘적인 기법들에 대한 이론적인 검증과 구현, 최적화에도 많은 도움이 될 것이다.
최여민 (EA Korea 리드 소프트웨어 엔지니어, 2005년 세계 대학생 프로그래밍 경시대회 13위)
한 마디로 지금까지 내가 본 알고리즘 문제 해결 책 중에 최고의 책입니다. 초심자와 경험자에게 모두 유용하면서도 이 정도로 훌륭한 책은 본 적이 없습니다. 저는 프로그래밍 대회를 12년동안 참가했는데, 이 책이 10년 전에 나왔었으면 하는 아쉬운 생각이 듭니다. 중요한 알고리즘과 문제 해결 기법들을 이해하기 쉽게 간결하게 설명하고 있어 초심자에게도 적합하며, 오랜 경험에서 얻을 수 있는 사소한 디테일을 돌이켜 볼 수 있기 때문에 경험자에게도 유용할 겁니다. 오랜 집필 기간 끝에 이 책이 나오게 되어 참 기쁘고, 주변 사람에게 여러 권 사서 선물로 나눠 주려고 합니다. 프로그래밍 대회 경험과 상관없이 누구에게나 추천하고 싶습니다.
이후연 (스탠포드대학교, 세계 정보올림피아드 금메달리스트)
뛰어난 축구선수들에게도 볼 컨트롤 같은 기본기가 중요하듯이 뛰어난 개발자가 되기 위해서는 알고리즘이라는 기본기가 필수라고 생각합니다. 예를 들어, 이미 몇년 전부터 세계의 최고 테크회사들인 Google이나 Facebook 등은 새로 사원을 뽑을 때 알고리즘 능력을 강조해왔고, 그렇게 뽑힌 사람들이 그런 기업들의 성장을 이끌어왔습니다. 그리고 뇌를 자극하는 다양한 알고리즘 문제들을 풀어보는 것은 그러한 기본기를 기르는 최고의 방법이죠. 하지만 지금까지는 대부분의 문제나 설명들이 영어로만 찾을 수 있었기 때문에 한인들에게 큰 장벽이 되어서 아쉬웠습니다. 이 책에서는 이 분야의 권위자가 다년간 쌓아온 노하우를 여러 문제풀이 사례를 통해 유쾌하게 배울 수 있는 방법을 제시하여 진심으로 기쁘고, 이런 책의 리뷰어로 일부나마 도울 수 있어서 참으로 영광입니다.
오시영 (카네기 멜론 대학교, 세계 정보올림피아드 은메달리스트)
처음 이 책이 나온다는 소리를 들었을 때 학교에서 ACM-ICPC대회를 한창 준비하고 있을 때 였습니다. 유명한 알고리즘 책은 몇 개 있었지만 알고리즘을 실제 적용하여 문제를 푸는 방법을 설명한, 알고리즘 대회를 위한 체계적인 책은 당시에 없었기 때문에 출판되면 당장 구해 공부할 생각이였죠. 그러나 시간은 흘러 대회도 치루고 학교 졸업도 하고 회사에 다니고 나서야 리뷰어를 모집한다는 글을 보게 되었습니다. 리뷰를 하는동안 좀더 빨리 나왔으면 하는 아쉬움이 들었습니다. 그랬다면 대회에서 좀 더 좋은 성적을 냈을 텐데, 지금보다 더 열정적으로 이 책을 공부했을 텐데 하는 아쉬움이 말이죠. 특히 문제 접근법과 DP해결 전략은 저에겐 최고였습니다. 못풀고 있던 DP 문제들을 풀수 있게 되었고 이해가 안되서 나중에 볼 심산으로 즐겨찾기에 넣어두었던 문제를 스스로 구현해 풀고 있었습니다. 알고리즘 공부를 하는 분이나 대회를 준비하시는 분은 이 책보다 좋은 책은 현재 나와 있지 않다고 단언할 수 있습니다."
송영준 (ESTsoft)
돌아보면 참으로 많은 영문 서적들을 접했습니다. 많은 대학에서 원서를 교재로 사용하고, 최신 서적들이 번역되기 위해선 또 그 만큼의 많은 시간이 흐르기 때문에 교수님들도 원서 읽는 것을 추천하시곤 합니다. 하지만 가까운 일본의 경우를 보더라도, 많은 서적들을 자국어로 출간하는데 힘을 기울이고 그것은 결국 기초 과학과 새로운 분야에 발을 디디는 학생들에게 큰 도움이 되어 왔다고 믿습니다. 이러한 맥락에서 이렇게 또 한권의 한국에서 태어난 알고리즘 책을 기꺼이 반기지 않을 수 없다는 뜻을 전하고 싶습니다.
김동혁 (KAIST 대학원)