알고리즘은 주어진 문제를 해결하는 방법을 추상화하여 일련의 단계적 절차를 논리적으로 기술해 놓은 명세서이다. '알고리즘'이라는 단어를 떠올리면 막연히 복잡하고 어렵다고 생각하기 쉽지만 생각만큼 어려운 건 아니다. 간단한 예를 보면서 알고리즘의 개념을 이해해 보자.
다음은 딸기 시럽을 얹은 치즈케이크를 만드는 레시피이다.
위 레시피에서 [요리 재료]는 컴퓨터에서 '자료'가 되고, 요리 재료를 다루는 방법은 '자료에 대한 연산'이 되며, 재료를 다루고 케이크를 만드는 과정을 기술한 [요리법]은 '알고리즘'이 된다.
효율적이고 정확하게 문제를 해결하려면 자료를 정의하고, 그 자료를 처리하기에 적당한 알고리즘을 작성해야 한다. 효과적인 알고리즘이 되려면 다음 조건을 만족해야 한다.
① 입력 : 알고리즘을 수행하는 데 필요한 자료가 외부에서 입력되어야 한다.
② 출력 : 알고리즘을 수행하고 나면 결과를 하나 이상 출력해야 한다.
③ 명확성 : 수행할 작업의 내용과 순서를 나타내는 알고리즘의 명령어는 명확하게 명세되어야 한다.
④ 유한성 : 알고리즘을 모두 수행하고 나면 반드시 종료되어야 한다.
⑤ 효과성 : 알고리즘의 모든 명령어는 기본적이며 실행할 수 있어야 한다.