알고리즘의 필수 요소

알고리즘을 구성하는 필수 요소는 다음과 같다.

입력 (Input)

알고리즘이 작동하려면 처리할 데이터나 정보를 입력받아야 한다.

출력 (Output)

알고리즘은 입력을 처리한 결과를 반드시 출력해야 한다.

명확성 (Definiteness)

알고리즘의 각 단계는 명확하게 정의된 작업으로 구성되어야 한다. 모호한 알고리즘은 구현이 어렵고 오류가 발생하기 쉽다.

유한성 (Finiteness)

알고리즘은 반드시 유한한 시간 내에 종료되어야 한다. 무한 루프나 무한 재귀 호출이 발생해서는 안 된다.

효율성 (Efficiency)

알고리즘은 효율적이어야 한다. 입력이 커질수록 알고리즘의 수행 시간이 느려지는 경우, 해당 알고리즘은 비효율적이라고 할 수 있다. 알고리즘의 효율성은 시간 복잡도와 공간 복잡도로 측정된다.

문제를 해결하는 단계

1단계: 문제를 읽고 이해한다

마음이 아무리 조급하더라도 문제를 차분히 읽고 요구사항을 완전히 이해하는 과정이 반드시 필요하다. 제대로 읽지 않으면 나중에 큰 어려움을 겪을 수 있다.

2단계: 재정의와 추상화

현실 세계의 개념을 수학적/전산학적 개념으로 변환하여 표현하는 과정이다.

현실 세계의 개념은 복잡하므로, 이를 효과적으로 다루기 위해 본질만 남기고 단순화하는 추상화 과정이 필요하다.

3단계: 계획 세우기

문제를 어떤 방식으로 해결할지 결정하고, 사용할 알고리즘과 자료구조를 선택한다.