* 해당 글은 [Udemy] JavaScript Algorithms and Data Structures Masterclass 강의 일부를 정리한 내용입니다.
객체의 빅오
1. 객체는 정렬되어 있지않아 빠르다.
2. 삽입(insertion), 제거(removal), 접근(access) O(1)
: 앞과 뒤가 존재하지않고 오직 key로 삽입, 제거, 접근을 수행하므로 상수시간이 소요된다.
3. 검색(searching) O(N)
: key를 찾는 것이 아니라 value가 어느 속성에 있는지 하나하나 확인하는 작업. n이 늘어남에 따라 시간이 오래 소요됨.
4. 객체의 메서드 빅오
O(N) : Object.keys
, Object.values
, Object.entries
O(1) : hasOwnProperty
: key를 넘기면 boolean을 반환. access의 개념
배열의 빅오
1. 배열은 정렬되어있으므로 특정 기능에 대해 객체보다 성능이 떨어질 수 있음.
2. 접근(access) O(1)
: 모든 요소를 훑는 것이 아님. index로 빠르게 접근가능
3. 삽입(insertion), 제거(removal) O(1) 혹은 O(N)
: 배열의 맨 뒤에 요소를 삽입/제거하는 것은 상수시간이 소요된다. 반면 앞이나 중간에 요소를 삽입/제거하면 그 뒤의 모든 요소들의 인덱스를 재배치해야하므로 N개의 갯수에 따라 시간이 오래 걸리게 됨.
4. 검색(searching) O(N)
5. 배열의 메서드 빅오
O(1) : push
, pop
O(N logN) : sort
O(N) : shift
, unshift
, slice
, splice
, concat
, forEach
, map
, filter
, reduce
etc..
'CS > 알고리즘' 카테고리의 다른 글
[Javascript] 백준 6996: 애너그램 (0) | 2023.05.30 |
---|---|
[Javascript] 백준 1764: 듣보잡 (0) | 2023.05.16 |
[Javascript] 백준 1697: 숨바꼭질 (0) | 2023.03.09 |
[Javascript] 백준 4963: 섬의 개수 (0) | 2023.03.08 |
[Javascript] 백준 2667: 단지번호 붙이기 (0) | 2023.03.07 |
댓글