<aside> <img src="/icons/list-indent_lightgray.svg" alt="/icons/list-indent_lightgray.svg" width="40px" />

Table Of Content

</aside>

자료 구조(data structure)는 효율적으로 데이터를 관리하고 수정, 삭제, 탐색, 저장할 수 있는 데이터 집합을 말한다.

<aside> 📢

알고리즘 분석이란?

알고리즘이 소모하는 자원을 분석하는 것 (자원 : 실행 시간, 메모리, 통신, 저장장치 등)

이 중에서도 일반적으로는 실행 속도에 초점을 두어 평가

복잡도

복잡도는 시간 복잡도공간 복잡도로 나뉜다.

시간 복잡도

빅오표기법

빅오표기법

시간 복잡도란 입력 크기에 대해 어떠한 알고리즘이 실행되는 데 걸리는 시간이다.

주요 로직의 반복 횟수를 중점으로 측정되며, 보통 빅오 표기법으로 나타낸다.

예를 들어 ‘입력 크기 n’의 모든 입력에 대한 알고리즘에 필요한 시간이 $10n^2$ + n이라고 하면 다음과 같은 코드를 상상할 수 있다.

for (let i = 0; i < 10; i++) {
  for (let j = 0; j < n; j++) {
    for (let k = 0; k < n; k++) {
      if (true) console.log(k);
    }
  }
}

for (let i = 0; i < n; i++) {
  if (true) console.log(i);
}

빅오 표기법이란 입력 범위 n을 기준으로 해서 로직이 몇 번 반복되는지 나타내는 것인데, 앞서 말한 코드의 시간 복잡도를 빅오 표기법으로 나타내면 O($n^2$)이 된다.