유클리디안 알고리즘(유클리드 호제법)을 나타낸 그래프이자, 외계어의 일종 (출처: http://mathworld.wolfram.com/EuclideanAlgorithm.html)
알고리즘은 항상 어려운 주제입니다. 왜일까요?

알고리즘을 배울 때는 보통 해당 알고리즘이 탄생하게 된 배경을 살펴본 후,

알고리즘의 원리를 공부합니다.

O 표기법으로 성능을 나타내보기도 하고,

이 과정에서 복잡한 수식도 만날 수 있습니다.

그러고 나서야, 알고리즘을 적용할 만한 문제를 몇 개 풀어보죠.

하지만 알고리즘을 고안할 때는 이렇게 접근하지 않습니다.

수많은 문제들을 풀다 보니 풀이 과정에 공통적인 흐름이 보이고,

이를 일반화한 패턴을 만든 후,

여러 실험을 통해 성능을 확인하고,

마지막에 가서야 이러한 풀이 패턴에 ‘000 알고리즘’이라는 이름을 붙이죠.

패턴이 보이세요?

우리도 이렇게 해보고 싶지만,

여기엔 두 가지 난관이 있습니다.

하나는, ‘수많은 문제 ‘를 풀 수 있을 실력이 필요하다는 점이고,

또 하나는 패턴이 같은 문제들을 알아봐야 한다는 점이죠.

그래서 여기, 『문제로 풀어보는 알고리즘』을 소개합니다.

이 책에서 독자는 먼저, 쉬운 문제를 마주하게 됩니다.

문제를 하나 풀면, 이를 변형한 조금 더 복잡한 문제가 기다리고요.

모범 답안의 소스코드를 살펴보고 저자의 해설을 읽으면서,

풀이 과정을 머릿속에 그려봅니다.

이제, 조금 변형된 문제를 직접 풀어보거나

앞의 문제를 다른 접근 방법으로 풀어봅니다.

이러다보면 풀이 과정 속에서 어떤 흐름이 느껴지는 경지에 다다르게 될 겁니다.

축하합니다. 이제 여러분은 알고리즘을 진짜로 배우게 되었습니다.

『문제로 풀어보는 알고리즘』은 쉽습니다.

『문제로 풀어보는 알고리즘』의 각 문제에는

1단계부터 4단계까지의 난이도가 표시되어 있습니다.

1단계는 프로그래밍 언어를 알고 있다면 풀 수 있을 정도입니다.

2단계는 입문자라도 몇 분 정도 고민을 하면 풀 수 있고요.

특정 알고리즘을 이해하는 데는 2단계 정도면 충분합니다.

3단계와 4단계가 너무 어렵다고 좌절하지 마시고,

일단 책을 끝까지 읽은 후 다시 도전해보세요.

『문제로 풀어보는 알고리즘』은 어렵습니다.

좀더 깊은 수준에 이르기를 원하는 분이라면,

3단계와 4단계 문제를 지나쳐서는 안 됩니다.

3단계는 오랜 시간 고민을 해야 풀 수 있습니다.

4단계는 반나절 이상은 고민해야 할 수도 있습니다.

하지만 고생한 만큼 보람이 있을 겁니다.

코딩 대회나 코딩 면접에서 비슷한  문제를 만났을 때도,

해법에 대한 아이디어를 떠올리기가 쉬워질 겁니다.

이런 분들이 읽으면 좋습니다.

– 알고리즘이 너무 어렵다고 포기한 분

– 현업에 종사하지만 알고리즘을 다시 이해하고 싶은 분

– 코딩 대회에 참여하고 싶은 분

– 정보올림피아드를 준비하는 중, 고교생

– IT 회사의 기술 면접을 준비하는 분

– IT 회사에서 기술 면접용 문제를 출제하는 분

이런 분들은 읽지 마세요.

– 구글 코드 잼에서 수상한 경력이 있는 분

– ACM 대회 본선 진출이 이제 식상한 분

– 알고리즘 서적의 저자(ㅡ_ㅡ)

이제 곧 서점에서 만나실 수 있습니다. ^^

11번가 | 강컴 | 보문고 | 알라딘 | 예스24 | 인터파크

소스 코드