big-o

시간 복잡도

시간 복잡도는 수행되는 연산의 수를 나타냅니다.

알고리즘에서 중요하지 않는 값들은 최대한 무시합니다.(상수항 무시, 영향력 없는 항 무시)

예시

function (n) {
  return n + n
}
// 덧셈 연산 1개 이므로 O(1)
function (n) {
  for (let i = 1; i <= n; i++) {
    console.log(i)
  }
  for (let j = 1; j <= n; j++) {
    console.log(j)
  }
}
// 대입연산 1개가 n만큼 실행되는 구문이 2개 있으므로 O(2n)이지만 상수항을 무시하므로 O(n)
function (n) {
  for (let i = 1; i <= n; i++) {
    for (let j = 1; j <= n; j++) {
      console.log(j)
    }
  }
}
// 대입연산 1개가 n^2만큼 실행되므로 O(n^2)

공간 복잡도

공간 복잡도는 알고리즘이 메모리를 얼마나 필요로 하는지를 나타냅니다.

예시

Big-O 표기법의 종류

O(1) < O(log n) < O(n) < O(n log n) < O(n²) < O(2ⁿ) < O(n!) < O(nⁿ)

Last updated

Was this helpful?