알고리즘과 자료구조란 무엇인가?

알고리즘은 컴퓨터가 특정 작업을 수행하도록 만드는 '레시피'다. 요리를 해본 적이 있다면, 알고리즘을 이미 이해하고 있는 셈이다!

다음은 팬케이크 레시피다:

  1. 큰 그릇에 밀가루, 베이킹 파우더, 소금, 설탕을 체로 쳐서 섞는다.
  2. 우유, 달걀, 녹인 버터를 넣는다.
  3. 부드러운 상태가 될 때까지 섞는다.
  4. 중간 불로 프라이팬을 달군다.
  5. 반죽을 약 1/4컵씩 떠서 팬에 올린다.
  6. 양쪽 면이 갈색이 될 때까지 익힌다.

이 레시피는 순차적으로 수행해야 하는 일련의 단계로 구성된다. 알고리즘도 이와 비슷하지만, 요리사가 아닌 컴퓨터가 수행할 명령어로 이루어져 있다.

재료들—밀가루, 우유, 달걀, 버터—은 알고리즘이 처리하는 데이터다. 데이터는 한 형태(생재료, 분리된 재료)로 알고리즘에 들어가고, 다른 형태(맛있는 팬케이크!)로 나온다.

그렇다면 자료구조는 무엇인가? 자료구조는 알고리즘이 데이터를 처리하는 동안 데이터를 담아두는 그릇이다. 팬케이크 레시피에서 자료구조는 밀가루를 담는 봉지, 모든 재료를 섞는 믹싱 볼, 팬케이크를 익히는 프라이팬, 그리고 완성된 팬케이크를 담는 접시다.