알고리즘 문제, 아무리 풀어도 막막하다면?
알고리즘처럼 생각하는 뇌를 장착하자
다들 알고리즘 공부 어떻게 하고 계시나요? 많은 참고 도서와 강의를 통해 대표적인 알고리즘을 배우고, 문제 유형을 공부하고 계신가요? 문제를 많이 접해 보는 것도 단기간에 실력을 높이거나 익숙해지는 데 중요합니다. 하지만 어느 정도 문제를 많이 풀어 봤지만, 문제가 조금만 변형되어도 막연하고 새롭다면, 기본기가 부족한 것일 수도 있습니다.
다음 중 하나라도 해당한다면, 알고리즘 공부법을 점검할 때입니다.
이 책은 다른 알고리즘 책과 조금 다릅니다. 알고리즘 문제 풀이를 관통하는 사고 방식을 자연스럽게 길러 주는 것을 목표로 합니다. 즉, 개별 문제의 풀이를 도출하기보다는 범문제적으로 적용할 수 있는 도구를 제공합니다. 어떤 문제를 만나더라도 어떻게 분석해 내는지, 어떻게 수학적으로 모델링하는지, 어떻게 알고리즘적인 해답을 도출하는지 물고기를 잡는 법을 알려 줍니다.
코드 없이 알고리즘의 본질에 다가서다
이 책은 입문서이고, 아주 작은 ‘토이’ 문제로 이루어져 있습니다. 일단 코드로 작성하기 전에, 절차를 표현하는 연습을 할 수 있습니다. 특정 언어가 갖는 특성을 빼고, 골격을 이루는 알고리즘을 탄탄하게 쌓음으로써 설계의 본질에 집중할 수 있습니다.
본질에 집중하기 위해 이 책은 두 부분으로 나뉘어 있습니다. 앞부분은 도전할 만한 작은 문제로 구성되어 있는데요. 문제를 푸는 건 어렵지 않지만 이러한 종류의 문제를 모두 해결할 수 있는 알고리즘을 도출해 내는 것은 어렵습니다. 별개의 문제는 간단해 보이지만 이와 같은 유형의 일반적인 문제를 해결하는 키를 발견하고 적용하는 것은 훈련이 필요합니다. 불필요한 세부 사항은 제거하고 꼭 필요한 변수만으로 추상화하기, 문제에서 변하지 않는 부분인 불변량 찾기, 크기 n을 풀 수 있으면 n+1을 풀 수 있다는 귀납법 이용하기, 문제의 대칭성을 이용해 승리 전략 찾기 등 1부에서 제공되는 알고리즘 설계의 핵심 원칙은 앞으로 맞닥뜨릴 어떤 문제든 접근할 수 있는 무기가 됩니다.
뒷부분에서는 수학의 언어를 이용해, 알고리즘을 공부하는 데 필요한 기호논리와 수리논리를 다룹니다. 알고리즘 문제를 해결하는 데 이만큼의 수학 기초는 반드시 짚고 넘어가야 합니다. 알고리즘을 공부하며 수학을 어디까지 알아야 하는지 궁금했다면, 이 책의 2부 정도는 알고 넘어가면 좋습니다. 만약 컴퓨터공학과 입학을 앞두고 있거나 알고리즘 수업을 수강하기 전이라면 이 책을 미리 읽어 보기를 추천합니다.
인사이트의 알고리즘 도서 리스트
《논리적 사고를 기르는 알고리즘 수업》은 다음 서점에서 구입하실 수 있습니다.