1.10 분석 기술
이 책에 나와 있는 퍼즐은 대부분 알고리즘 설계 위주이지만 알고리즘 분석이 필요한 퍼즐도 있다. 이 튜토리얼에서는 퍼즐 몇 개를 풀어보면서 표준적인 알고리즘 분석 기술을 검토해보겠다. 여기서는 최대한 간단한 수준으로만 살펴볼 것이므로 더 자세한 내용은 [Lev06], [Kle05], [Cor09]와 같은 교과서(뒤로 갈수록 어렵다)에서 알아보자.
알고리즘을 분석할 때는 보통 알고리즘의 시간 복잡도를 따진다. 보통 알고리즘의 기본 작업 단계를 실행하는 횟수를 세는 방식을 사용한다. 대부분의 알고리즘 문제에서 문제의 크기가 커지면 실행 횟수도 커진다. 알고리즘 분석의 주요 목표는 실행 횟수가 얼마나 빠르게 증가하는지 알아내는 것이다. 당연히 이렇게 횟수를 따지는 데도 수학이 필요하다. 우선 알고리즘을 분석할 때 반드시 필요한 주요 수학 공식을 알아보자.