더북(TheBook)

2.1 알고리즘 특강

알고리즘은 어떤 문제를 해결하기 위해 필요한 규칙과 단계를 모아 놓은 것이다. 혹시 좀 더 복잡한 정의를 기대했는가? 예를 들어 다음 코드와 같이 어떤 배열의 요소를 검토하여 특정 숫자를 포함하는지 확인하는 것이 바로 알고리즘이다.

public static bool Contains(int[] array, int lookFor) {
    for (int n = 0; n < array.Length; n++) {
        if (array[n] == lookFor) {
            return true;
        }
    }
    return false;
}

내가 이것을 처음 고안한 사람이라면 이것을 세다트 알고리즘(Sedat’s Algorithm)이라고 부를 것이다. 하지만 이 알고리즘은 아마도 맨 처음 등장한 알고리즘 중 하나일 것이다. 그렇게 특별하지는 않지만, 잘 돌아가고 말이 된다. 이것이 알고리즘에 대한 중요한 점 중 하나이다. 알고리즘은 오직 우리의 필요에 맞게 작동하면 그만이다. 개발한 알고리즘이 반드시 어떤 기적을 행할 필요는 없다. 식기세척기에 접시를 넣고 돌리는 것도 일종의 알고리즘을 따르는 것이다. 알고리즘이 존재한다고 해서 그것이 언제나 기발한 것은 아니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.