더북(TheBook)

1장에서는 첫 번째 버전이 두 번째 버전보다 단계가 두 배 더 필요하다는 점에 주목했으나 위 예제에서는 빅 오 관점에서 어떻게 달라지는지 보자.

다시 말하지만 빅 오는 데이터 원소가 N개일 때 얼마나 많은 단계 수가 필요한가라는 핵심 질문에 대한 답이다. 하지만 위 예제에서 N은 배열의 크기가 아니라 단순히 upperLimit으로써 함수에 전달하는 수다.

첫 번째 버전에는 N단계가 걸린다. 즉 upperLimit이 100이면 함수에 100단계가 걸린다(실제로는 2부터 세기 시작하므로 99단계가 걸린다). 따라서 첫 번째 알고리즘의 시간 복잡도는 O(N)이라고 분명하게 말할 수 있다.

두 번째 버전에는 N/2단계가 걸린다. upperLimit이 100이면 함수에 50단계가 걸린다. O(N / 2)라고 부르고 싶겠지만 이제는 상수를 버리고 표현을 O(N)으로 줄이는 법을 배웠다.

보다시피 두 번째 버전이 첫 번째 버전보다 두 배 빠르고 따라서 당연히 더 나은 방법이다. 이는 빅 오 표기법으로는 똑같이 표현되더라도 어떤 알고리즘이 더 빠른지 알아내려면 분석해야 한다는 점을 보여주는 또 하나의 좋은 예다.

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