본문 바로가기

CS

[CS] 객체와 배열의 작업 / 메서드에 따른 시간 복잡도

1. Object


객체를 사용해야 할 때

  • 순서가 필요하지 않은 경우
  • 빠른 액세스/삽입 및 제거가 필요한 경우

작업에 따른 시간 복잡도

  • 삽입 :  O(1)
  • 제거 :  O(1)
  • 액세스 : O(1)
  • 검색 : O(N)

메서드 별 시간 복잡도

  • Object.keys -   O(N)
  • Object.values -   O(N)
  • Object.entries -   O(N)
  • hasOwnProperty -   O(1)

 

2. Array

 

배열을 사용해야 할 때

  • 순서가 필요한 경우
  • 빠른 액세스/삽입 및 제거가 필요한 경우

 

작업에 따른 시간 복잡도

 

  • 삽입, 제거 : 경우에 따라 다름
    •  push, pop 의 경우는  O(1)
    •  shift, unshift 의 경우는 O(N) : idx 0 이후의 모든 인덱스를 수정해야하므로
  • 액세스 : O(1) 
    •  배열 내부에 인덱스가 있기 때문에 객체의 접근방식과 동일
  • 검색 : O(N)

 

메서드 별 시간 복잡도

  • push -   O(1)
  • pop -   O(1)
  • shift -   O(N)
  • unshift -   O(N)
  • concat -   O(N)
  • slice -   O(N)
  • splice -   O(N)
  • sort -   O(N * log N)
  • forEach/map/filter/reduce/etc. -   O(N)