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)
'CS' 카테고리의 다른 글
[CS] JWT vs Session 인증: 언제 어떤 방식을 선택해야 할까? (0) | 2024.10.15 |
---|---|
[CS] 알고리즘의 공간 복잡도(Space Complexity)란? (0) | 2024.10.11 |
Browser Data Stroage 종류와 차이점 (0) | 2023.01.12 |
[CS] 빅 오 표현법(Big O Notation) 시간 복잡도 (0) | 2022.06.22 |