알고리즘을 말할 때 반사적으로 코딩이나 컴퓨터 프로그래밍을 떠올리는 사람이 많다. 하지만 알고리즘은 코딩이나 컴퓨터 프로그래밍과 완전히 분리할 수 있는 개념이다. 이 책은 각종 퍼즐을 모아놓은 책이다. 그중에서도 문제해결을 위한 분명하게 정의된 절차, 즉 “알고리즘”을 써서 풀 수 있는 퍼즐을 공부하기 위한 책이다.
이 책의 1장은 튜토리얼로, 알고리즘을 설계하고 적용하는 데 필요한 일반적인 전략을 담고 있다. 알고리즘 교과서 수준의 심화 내용을 제공하지는 않지만 비전공자에게는 “아, 이런 게 있구나!”라고 알려주는 수준으로, 전공자에게는 “아, 이런 걸 배웠었지!”라고 되새겨 볼 기회를 주는 수준으로 몇 가지 예제와 함께 핵심을 빠르게 짚어주는 부분이다.
2장에는 초급 퍼즐 50개, 중급 퍼즐 60개, 고급 퍼즐 40개, 총 150개 퍼즐이 담겨 있다. 영문판에는 문제, 힌트, 풀이와 참고사항이 서로 다른 장으로 나뉘어 편집되어 있지만 한국어판에서는 앞뒤로 오가는 번거로움을 없애기 위해 문제, 힌트, 풀이, 참고사항을 연속적으로 배치했다.
생각하는 힘과 문제해결 능력을 키우려면 많이 생각하고 많은 문제를 해결해봐야 한다. 이 책은 그런 연습을 원하는 이들에게 훌륭한 운동장과 도전과제 역할을 해준다. 프로그래밍 면접을 준비 중이라면 여기에 실린 문제를 풀어보면서 문제를 제대로 분석하고 논리적으로 올바르고 효과적인 알고리즘을 구상하는 능력을 기를 수 있을 것이다. 코딩과는 별개로 논리적 기반 마련을 위한 훈련을 할 수 있어 기본기를 다듬을 좋은 기회가 될 것이다. 퍼즐 덕후라면 여러 가지 퍼즐을 푸는 것 자체에서도 큰 즐거움을 느낄 뿐만 아니라 퍼즐의 뿌리를 찾아가는 여러 참고문헌으로부터 또 다른 덕질의 기쁨을 만끽할 수 있을 것이다.
좋은 책을 발굴하고 한국어판 출판을 결정해주신 길벗출판사 식구들, 그중에도 특히 한동훈 부장님께 감사드린다. 한동훈 부장님의 인내와 관심이야말로 이 한국어판을 만들어낸 자양분이다.