728x90
🤓 선수 지식으로는 빅오 표기법의 개념이 필요하다.
객체의 빅오 표기
객체는 언제 사용하냐
- 정렬의 필요가 없을때
- 빠른 접근, 입력과 제거를 원할
function addUpTo(n) {
let total = 0;
for (let i = 1; i <= n; i++) {
total += i;
}
return total;
}
빅오의 객체 표기
- 입력 - O(1)
- 객체에 키와 값을 추가하는 빅오 표기
- 제거 - O(1)
-
- 객체의 키를 제거하기 위한 빅오 표기
- 탐색 - O(n)
- 접근 - O(1)
- 객체의 키에 접근하기 위한 빅오 표기
탐색은 희귀하지만, O(N)은 N에 따라서 자린 선형시간이다.
빅오의 객체 메서드
- Object.keys - O(N)
- Object.values - O(N)
- Object.entries - O(N)
- hasOwnProperty - O(1)
객체가 커질수록, 객체안에 저장되어 있던 데이터를 다루는 keys, values, entires와 같은 메서드들이 있다.
배열안에서 데이터 접근이 느린이유 🤨
배열에서 가장 중요한 점은 무엇일까?
👉🏻 정렬이 되어있다. (데이터가 정렬되어 있는 기준이있다.)
그렇다면 객체는? (객체는 뭉쳐있다. 🌫️)
배열을 언제 사용하냐
- 순서를 정하고 싶을 때
- 입력과 제거를 할때
- 성능을 빠르게 할때
배열의 빅오표기법
- 접근 - 어디에 입력하는지에 따라 달렸다.
- 제거 - 어디에 입력하는지에 따라 달렸다.
- 탐색 - O(N)
- 접근 - O(1)
let names = ['Michael', 'Melissa', 'Andrea'];
let values = [true, [], [], 2, 'awesome'];
✅ 객체는 거의 모든 것을 더 빠르게 하지만, 정렬되어 있지 않는다.
✅ 배열은 정렬되어 있지만, 끝에 추가/제거 작업이 시작에 추가/제거하는 작업보다 훨씬 빠르다.
→ why? 시작에 넣거나 빼면 처음부터 끝까지 영향을 받으면서 전부 인덱스를 다시 정리해야하기 때문
728x90
'📜 CS > 알고리즘' 카테고리의 다른 글
[알고리즘] 문제 해결 패턴 (3) 기준점 간 이동 배열 패턴 (0) | 2024.08.12 |
---|---|
[알고리즘] 문제 해결 패턴 (2) 다중 포인터 패턴 (0) | 2024.08.08 |
[알고리즘] 문제 해결 패턴 (1) 빈도수 세기 패턴 (0) | 2024.08.05 |
[알고리즘] 문제해결접근법 (0) | 2024.08.01 |
[알고리즘] 빅오표기법 (0) | 2024.07.30 |