자료구조
[Algorithm] 최소 힙(Heap)으로 우선순위 큐 구현하기
[Algorithm] 최소 힙(Heap)으로 우선순위 큐 구현하기
2024.05.28힙의 특징최단 경로를 찾을 때 널리 사용하는 다익스트라 알고리즘은, 탐색 큐의 자료구조가 전체 성능에 결정적인 영향을 미친다. 때문에 추가/삭제를 빠르게 수행할 수 있는 우선순위 큐를 주로 사용한다. 우선순위 큐는 일반 큐와 비슷하지만, 각 요소가 우선순위를 가지고 있으며, 우선순위가 높은 요소가 먼저 출력된다는 점이 다르다. 우선순위 큐는 크게 배열, 연결리스트, 힙 이렇게 세 가지 방법으로 구현할 수 있다. 그중 완전 이진 트리 구조를 갖는 힙으로 구현하면 추가/제거의 효율성이 크게 향상된다. 구현 방법삽입삭제순서 없는 배열O(1)O(n)순서 없는 연결리스트O(1)O(n)정렬된 배열O(n)O(1)정렬된 연결리스트O(n)O(1)힙O(log n)O(log n) 이진 트리는 각 부모 노드가 왼쪽/오른쪽 최..
[JS] 자바스크립트 Map / Set 자료구조
[JS] 자바스크립트 Map / Set 자료구조
2024.04.27MapMap은 항상 `map` 전용 메서드(`set`, `get` 등)를 사용한다. `map[key] = 2` 형태로 사용하면 `map`을 일반 객체로 취급하므로 많은 제약이 생긴다. TL;DR❶ key-value로 이루어진 순서가 있는 컬렉션(집합) ⭐️ ❷ 삽입 순서 기억 ❸ 중복 key 불가 — 이미 존재하는 key에 대한 value를 추가하면 해당 key의 value를 덮어씀let map = new Map([['one', 1]]);map.get('one'); // 1map.set('one', 111);map.get('one'); // 111 ❹ Map 내장 메서드 forEach 지원(배열 forEach 메서드와 유사) / for of 순회 가능map.forEach((value, key, map) ..