다들 알고리즘 공부 어떻게 하고 계시나요? 많은 참고 도서와 강의를 통해 대표적인 알고리즘을 배우고, 문제 유형을 공부하고 계신가요? 문제를 많이 접해 보는 것도 단기간에 실력을 높이거나 익숙해지는 데 중요합니다. 하지만 어느 정도 문제를 많이 풀어 봤지만, 문제가 조금만 변형되어도 막연하고 새롭다면, 기본기가 부족한 것일 수도 있습니다.

다음 중 하나라도 해당한다면, 알고리즘 공부법을 점검할 때입니다.

이 책은 다른 알고리즘 책과 조금 다릅니다. 알고리즘 문제 풀이를 관통하는 사고 방식을 자연스럽게 길러 주는 것을 목표로 합니다. 즉, 개별 문제의 풀이를 도출하기보다는 범문제적으로 적용할 수 있는 도구를 제공합니다. 어떤 문제를 만나더라도 어떻게 분석해 내는지, 어떻게 수학적으로 모델링하는지, 어떻게 알고리즘적인 해답을 도출하는지 물고기를 잡는 법을 알려 줍니다.

이 책은 입문서이고, 아주 작은 ‘토이’ 문제로 이루어져 있습니다. 일단 코드로 작성하기 전에, 절차를 표현하는 연습을 할 수 있습니다. 특정 언어가 갖는 특성을 빼고, 골격을 이루는 알고리즘을 탄탄하게 쌓음으로써 설계의 본질에 집중할 수 있습니다.

본질에 집중하기 위해 이 책은 두 부분으로 나뉘어 있습니다. 앞부분은 도전할 만한 작은 문제로 구성되어 있는데요. 문제를 푸는 건 어렵지 않지만 이러한 종류의 문제를 모두 해결할 수 있는 알고리즘을 도출해 내는 것은 어렵습니다. 별개의 문제는 간단해 보이지만 이와 같은 유형의 일반적인 문제를 해결하는 키를 발견하고 적용하는 것은 훈련이 필요합니다. 불필요한 세부 사항은 제거하고 꼭 필요한 변수만으로 추상화하기, 문제에서 변하지 않는 부분인 불변량 찾기, 크기 n을 풀 수 있으면 n+1을 풀 수 있다는 귀납법 이용하기, 문제의 대칭성을 이용해 승리 전략 찾기 등 1부에서 제공되는 알고리즘 설계의 핵심 원칙은 앞으로 맞닥뜨릴 어떤 문제든 접근할 수 있는 무기가 됩니다.

뒷부분에서는 수학의 언어를 이용해, 알고리즘을 공부하는 데 필요한 기호논리와 수리논리를 다룹니다. 알고리즘 문제를 해결하는 데 이만큼의 수학 기초는 반드시 짚고 넘어가야 합니다. 알고리즘을 공부하며 수학을 어디까지 알아야 하는지 궁금했다면, 이 책의 2부 정도는 알고 넘어가면 좋습니다. 만약 컴퓨터공학과 입학을 앞두고 있거나 알고리즘 수업을 수강하기 전이라면 이 책을 미리 읽어 보기를 추천합니다.

《논리적 사고를 기르는 알고리즘 수업》은 다음 서점에서 구입하실 수 있습니다.

Yes24 | 교보문고 | 알라딘

정오표