Oops, All Code!/🤯 Oops, My Algorithm!
( ु ´͈ ᵕ `͈ )ु JS:: 코딩테스트를 위한 배열 / 객체 / 집합(Set) 정리글
밍동망동
2024. 7. 22. 23:57
배열과 객체, 집합(Set) 자료구조는 각기 다른 시간 복잡도를 갖는다.
따라서, 적절한 상황에 적절한 자료구조를 선택할 수 있어야한다.
배열:: 빈번한 접근이 필요한 경우
Access(접근) | O(1) |
Search(탐색) | O(n) |
Insert/Delete(삽입/삭제) | O(n) |
따라서 데이터가 순서대로 정렬되어있고, 특정 인덱스로 자주 접근하는 경우에 사용함.
- 순차적으로 데이터에 저장하고 접근
- 학생 성적 및 목록 등
// 배열 생성
let arr = [1, 2, 3, 4, 5];
// 접근 (Access)
console.log(arr[2]); // 3
// 탐색 (Search)
console.log(arr.indexOf(3)); // 2
// 삽입 (Insert)
arr.splice(2, 0, 10); // 2번째 인덱스에 10 삽입
console.log(arr); // [1, 2, 10, 3, 4, 5]
// 삭제 (Delete)
arr.splice(2, 1); // 2번째 인덱스에서 1개 요소 삭제
console.log(arr); // [1, 2, 3, 4, 5]
객체:: 키-값 쌍 데이터, 빠른 삽입/삭제
Access(접근) | O(1) |
Search(탐색) | O(n) |
Insert/Delete(삽입/삭제) | O(1) |
키-값 쌍으로 데이터를 저장하고, 특정 키로 자주 접근하거나 수정하는 경우
- 사용자 정보 저장 (UserID: key, Info: value)
// 객체 생성
let obj = {
id: 1,
name: 'John Doe',
age: 30
};
// 접근 (Access)
console.log(obj.name); // John Doe
// 탐색 (Search)
console.log(Object.values(obj).indexOf('John Doe')); // 1
// 삽입 (Insert)
obj.email = 'john.doe@example.com';
console.log(obj); // { id: 1, name: 'John Doe', age: 30, email: 'john.doe@example.com' }
// 삭제 (Delete)
delete obj.age;
console.log(obj); // { id: 1, name: 'John Doe', email: 'john.doe@example.com' }
집합(Set):: 중복을 허용하지 않으며 빠른 탐색이 필요한 경우
Search(탐색) | O(1) |
Insert/Delete(삽입/삭제) | O(1) |
Iteration(순회) | O(n) |
중복되지 않는 유일한 값을 저장하고, 특정 값의 존재 여부를 확인하는 경우
- 참석자 명단
// 집합 생성
let mySet = new Set();
// 값 추가 (Insert)
mySet.add(1);
mySet.add(5);
mySet.add(1); // 중복된 값은 무시됨
mySet.add(7);
// 값 포함 여부 확인 (Search)
console.log(mySet.has(1)); // true
console.log(mySet.has(2)); // false
// 값 삭제 (Delete)
mySet.delete(5);
console.log(mySet); // Set { 1, 7 }
// Set 크기 확인
console.log(mySet.size); // 2
// Set 순회 (Iteration)
for (let item of mySet) {
console.log(item); // 1, 7
}
Set과 Access
Set(집합)에서는 특정 인덱스나 키를 통해 직접 접근할 수 없다.
순서가 중요하지 않으며, 해시 테이블 기반으로 구현됐기 때문이다.
해시 테이블은 특정 키를 해싱해 저장 위치를 결정하는 방식이다.
자료구조 - 해시 테이블(hash table)이란 무엇인가?
1. 해시와 해시 테이블(hash table)이란 무엇인가? 1) 해시 테이블이란? 해시 함수에 의해 얻어지는 값을 해시라고 부른다. 해시 함수에 key를 줄 경우, key에 해당하는 숫자 index주소를 반환하고, 그 숫
junvelee.tistory.com