여러분은 오늘 어떤 문제를 해결 했나요? 여기서 문제란 교과서 속 수학 문제나 난처한 일 또는 말썽을 뜻하는 것은 아닙니다. 친구와의 약속 시각 정하기, 주머니 사정을 고려하여 점심 메뉴 정하기, 식당까지 가는 최고의 길 찾기 등 아주 일상적인 일들도 모두 문제이지요. 컴퓨터 과학에서는 이렇게 해결이 필요한 일을 문제(Problem)라고 부릅니다. 우리는 알게 모르게 아주 많은 문제를 마주하고 해결하며 살아가고 있습니다.
문제의 해답을 찾기 위해 우리는 여러 선택지를 찾아보고 비교합니다. 그리고 문제를 해결할 수 있는 방법을 고릅니다. 이러한 과정을 ‘탐색(Search)’이라고 합니다. 또 탐색을 거쳐 찾은 해답을 ‘문제의 해(Solution)’라고 합니다.