티스토리 뷰
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
'Oops, All Code! > 🤯 Oops, My Algorithm!' 카테고리의 다른 글
| ꒰ྀི 12. LeetCode:: 가장 긴 공통 접두사 (0) | 2024.07.23 |
|---|---|
| ꒰ྀི 11. LeetCode:: 괄호 생성 (0) | 2024.07.23 |
| ꒰ྀི 10. LeetCode:: 전화번호의 문자 조합 (0) | 2024.07.22 |
| ꒰ྀི 09. LeetCode:: 유효한 수도쿠 (0) | 2024.07.22 |
| ꒰ྀི 08. 프로그래머스:: 피로도 (0) | 2024.07.18 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 회고
- 어휘력
- 소사벌
- 도서추천
- 일급객체
- 안성스타필드
- 네이버부스트캠프
- 프리코스
- react
- 소사벌맛집
- 비즈플리마켓
- 책추천
- 웹풀스택
- 카페추천
- typescript
- 대학생팝업스토어
- js
- 대학생플리마켓
- 어른의어휘공부
- 트러블슈팅
- javascript
- 서평
- 카드뉴스
- 우아한테크코스
- 프론트엔드
- 부스트캠프
- 경험플리마켓
- 코딩테스트
- 도서리뷰
- 프로토타입
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함