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