알고리즘 문제 해결 능력은 프로그래머가 갖춰야 할 필수 역량이다. 이를 기르기 위해서는 잘 알려진 알고리즘과 자주 출제되는 문제 풀이를 익히는 것도 좋지만, 좀 더 근본적으로는 문제가 주어졌을 때 공식화하고 알고리즘으로 표현하는 논리적 사고 방식을 기르는 것이 중요하다.
이 책의 목표는 좋은 문제 해결 기술을 심어 주는 것이다. 전반부는 알고리즘 문제 해결의 원칙을 체계적으로 소개하는 여러 가지 예제로 구성되어 있다. 문제 중심으로 접근하여 자연스럽게 독자들의 도전 성향을 자극한다. 불변량, 귀납법, 대칭성 등 알고리즘 설계의 핵심 원칙은 앞으로 맞닥뜨릴 어떤 문제에든 접근할 수 있는 무기가 된다. 후반부에서는 원칙을 뒷받침하는 수학 지식을 다뤄 예제 이해에 필요한 이론을 제공한다. 알고리즘 문제를 좀 더 효과적으로 푸는 데 딱 필요한 만큼의 수학적 배경지식을 정리할 수 있다.
이 책에서 다루는 문제는 익히 잘 알려진 ‘재미 삼아 푸는 수학 문제’이다. 문제의 답을 찾는 것은 쉽지만 특정한 종류의 문제를 모두 해결할 수 있는 알고리즘을 표현하는 일은 연습이 필요하다. 각종 문제의 알고리즘을 설계하는 연습을 통해 문제 해결에 필요한 논리적 사고와 알고리즘적 접근법을 자연스럽게 익힐 수 있다.
Contents
1부 알고리즘 문제 해결
1장 들어가며
2장 불변량
3장 강 건너기
4장 게임
5장 기사와 건달
6장 귀납법
7장 가짜 동전 찾기
8장 하노이의 탑
9장 알고리즘 설계의 원칙
10장 다리 건너기 문제
11장 기사의 순회
2부 수학적 기법
12장 수학의 언어
13장 불리언 대수
14장 한정 기호
15장 정수론의 요소들
16장 관계, 그래프, 경로 대수
Author
롤랜드 백하우스,김준원,윤교준
노팅엄 대학교의 컴퓨터과학 교수. 저서로는 《Program Construction: Calculating Implementations from Specifications(프로그램 설계: 명세에서 구현 계산하기)》가 있다.
노팅엄 대학교의 컴퓨터과학 교수. 저서로는 《Program Construction: Calculating Implementations from Specifications(프로그램 설계: 명세에서 구현 계산하기)》가 있다.