big-ocomplexity

시간 복잡도와 Big-O를 설명해 주세요

예상 시간
6
30초 답변

꼬리질문

조금 더 깊게 물어본다면

답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.

O(1)은 정말 항상 한 번에 끝난다는 뜻인가요?

부가 설명

for (const item of items) {
  console.log(item);
}

입력 길이만큼 한 번 실행되므로 O(n)입니다.

for (const a of items) {
  for (const b of items) {
    compare(a, b);
  }
}

모든 쌍을 비교하면 O(n²)에 가깝습니다.

Big-O는 실제 성능의 전부는 아닙니다. O(n) 알고리즘이 작은 입력에서는 O(log n) 알고리즘보다 빠를 수도 있고, cache locality나 I/O 같은 요인이 중요할 수도 있습니다.

하지만 입력이 커질 때 병목을 예측하고 알고리즘을 비교하는 공통 언어로 유용합니다.

한 줄 정리

Big-O는 입력 크기가 커질 때 알고리즘의 실행 비용이 어떤 속도로 증가하는지 표현하는 표기법입니다.