알고리즘을 배운다는 건 단순히 지식을 흡수하는 것이 아니라 세상의 다양한 문제를 해결하는 수단을 늘려가는 것입니다. 알고리즘이란 원래 문제를 풀기 위한 절차를 말합니다. 알고리즘 동작을 구체적으로 이해하는 걸 넘어서 실제로 문제 해결에 도움이 될 때 비로소 알고리즘을 배웠다고 할 수 있습니다.
알고리즘을 배우기 시작한 후 세상의 여러 문제와 마주쳤을 때 세계관에 혁명이 일어난 걸 기억합니다. 저도 알고리즘을 배우기 전에는 문제를 해결하는 행위란 고등학교 수학에서 배우던 ‘공식’ 같은 걸 찾는 거라고 생각했습니다. 그러니까 문제를 푸는 구체적이고 명확한 답을 구하는 것이 문제 해결이라고 무의식적으로 생각했습니다. 하지만 알고리즘을 배우고 나서는 ‘구체적인 답을 구하지 못하더라도 답에 다가가는 절차를 찾는 것’이라고 문제 풀이를 바라보는 관점이 변했고, 그에 따라 문제 해결 수단이 크게 늘어난 기분이 들었습니다. 이 책으로 여러분과 이런 감각을 공유할 수 있게 되길 바라며, 알고리즘을 설계하고 구현하는 즐거움을 느낄 수 있다면 저에게도 큰 즐거움일 것입니다.