더북(TheBook)

2.1.1 빅오를 더 잘 이해하면 좋다

확장성을 이해하는 것은 개발자가 갖춰야 할 중요한 기술이다. 크기 혹은 수치가 얼마나 빨리 증가할지 미리 안다면 앞으로 무슨 일이 일어날지 미리 알 수 있고, 시간을 너무 많이 낭비하기 전에 무엇이 문제인지 파악할 수도 있다. 마치 터널 안에서 움직이지도 않았는데 터널 끝의 빛이 점점 커지는 것과 같은 효과를 볼 수 있다.

빅오 표기법은 이름에서 알 수 있듯이 증가를 설명하기 위한 표기법일 뿐이며, 여기에는 오해의 소지가 있다. O(N)을 처음 봤을 때 어떤 숫자를 반환하는 평범한 함수인 줄 알았지만, 그렇지 않다. 이것은 수학자들이 증가를 설명하기 위한 방법이며, 이를 통해 알고리즘이 얼마나 확장되는지를 알 수 있다. 모든 요소를 순서대로 검토하려면 배열의 요소 개수에 선형 비례하는 연산을 수행해야 한다. 이것을 O(N)이라고 쓰며, 여기서 N은 요소의 수를 나타낸다. 아직 O(N)만 보고 알고리즘이 정확히 몇 가지 단계를 밟을지는 알 수 없지만, 선형적으로 증가한다는 것은 알 수 있다. 이를 통해 데이터 크기에 따라 알고리즘 성능이 어떻게 달라질지 가정할 수 있다. 알고리즘 성능이 어떤 조건에서 나빠질 수 있는지도 예측할 수 있다.

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