가능한 한 컴퓨터의 전문 지식 없이 보다 쉽게 알고리즘을 이해할 수 있도록 집필되었다. 사실 알고리즘을 쉽게 설명하기는 알고리즘을 고안하는 것보다 더 힘들 때가 많다. 왜냐하면 컴퓨터 용어를 거의 사용하지 않고 단계적인 절차를 간단히 표현한다는 것 자체가 매우 힘들기 때문이다.
아무리 컴퓨터의 전문 지식이나 용어의 사용을 회피하려 해도 몇몇 알고리즘을 설명할 때엔 그렇지 못한 부분도 있다. 그래서 본서에서는 캐릭터들을 이용하여 보다 친근감을 가지고 책을 읽을 수 있도록 하였다.
Part 1 알고리즘에 대해 알아보자
알고리즘이 무엇인지 알아보고 다양한 알고리즘들을 분류해본다.
Part 2 가볍게 두뇌를 풀어보자
약병 찾기, 빠진 숫자, 과반수 넘는 구슬, 사이클, 한붓그리기를 차례로 다루면서, 특히 조건이 부가됨에 따라 어려워진 문제들의 해결 과정을 소개한다.
Part 3 나누어 풀어보자
분할 정복(Divide-and-Conquer) 알고리즘으로 해결되는 가짜 동전, 반으로 나누어 찾기, 퀵 정렬, k번째 작은 수, 가장 가까운 두 점 찾기 문제들에 대한 알고리즘들을 설명한다.
Part 4 욕심내어 풀어보자
그리디(Greedy) 알고리즘은 Top-down 방식으로 최적화(최댓값 또는 최솟값을 찾는) 문제를 해결하는 알고리즘이다. 동전 거스름돈, 물건을 부분적으로 담을 수 있는 부분 배낭 문제, 특수한 숫자들 중에서 숫자 선택, 최소 비용으로 연결, 가장 짧은 길 문... Part 1 알고리즘에 대해 알아보자
알고리즘이 무엇인지 알아보고 다양한 알고리즘들을 분류해본다.
Part 2 가볍게 두뇌를 풀어보자
약병 찾기, 빠진 숫자, 과반수 넘는 구슬, 사이클, 한붓그리기를 차례로 다루면서, 특히 조건이 부가됨에 따라 어려워진 문제들의 해결 과정을 소개한다.
Part 3 나누어 풀어보자
분할 정복(Divide-and-Conquer) 알고리즘으로 해결되는 가짜 동전, 반으로 나누어 찾기, 퀵 정렬, k번째 작은 수, 가장 가까운 두 점 찾기 문제들에 대한 알고리즘들을 설명한다.
Part 4 욕심내어 풀어보자
그리디(Greedy) 알고리즘은 Top-down 방식으로 최적화(최댓값 또는 최솟값을 찾는) 문제를 해결하는 알고리즘이다. 동전 거스름돈, 물건을 부분적으로 담을 수 있는 부분 배낭 문제, 특수한 숫자들 중에서 숫자 선택, 최소 비용으로 연결, 가장 짧은 길 문제를 해결하기 위한 그리디 알고리즘을 각각 소개한다.
Part 5 작은 것들부터 풀어보자
가장 긴 순서 찾기, 가장 즐거운 여행 경로 찾기, 동전 게임, 물건을 통째로 담는 배낭 문제를 해결하기 위한 동적 계획(Dynamic Programming) 알고리즘을 소개한다. 특히 배낭 문제를 위한 알고리즘은 어떤 다른 알고리즘들에 비해 난이도가 높은 알고리즘이라 독자들이 이해하는데 어려움이 따를 수도 있다.
Part 6 되돌아가며 풀어보자
미로, 일반적인 숫자들 중에서 숫자 선택, 색칠하기, 여왕 말 문제를 백트래킹(Backtracking) 기법으로 해결해본다.
Part 7 재미있는 정렬
버블 정렬, 칵테일 정렬, 삽입 정렬, 카드 정렬, 팬케이크 정렬을 소개한다.