[javascript] 우선순위 큐 (Priority Queue) 데이터 구조
우선순위 큐는 데이터를 담는 일반적인 큐와 다르게 각 요소가 우선순위와 함께 저장되는 데이터 구조입니다. 이는 가장 높은 우선순위를 가진 요소가 먼저 처리되는 특징을 가지고 있습니다.
우선순위 큐의 작동 방식
우선순위 큐는 매우 다양한 방식으로 구현될 수 있습니다. 가장 간단한 형태는 정렬된 배열을 사용하여 구현하는 것이며, 이 경우 삽입 및 삭제 연산 시간이 O(n)으로 이루어집니다. 더 효율적인 구현 방법으로는 이진 힙(Binary Heap)을 사용하는 방법이 있으며, 최악의 경우에도 O(log n)의 시간복잡도로 삽입 및 삭제 연산을 수행할 수 있습니다.
JavaScript에서 우선순위 큐 구현하기
자바스크립트에서 우선순위 큐를 구현하기 위해서는 보통 배열 또는 힙을 활용합니다. 아래는 배열을 사용한 간단한 예시입니다.
class PriorityQueue {
constructor() {
this.items = [];
}
enqueue(element, priority) {
let queueElement = { element, priority };
let added = false;
for (let i = 0; i < this.items.length; i++) {
if (queueElement.priority < this.items[i].priority) {
this.items.splice(i, 0, queueElement);
added = true;
break;
}
}
if (!added) this.items.push(queueElement);
}
dequeue() {
return this.items.shift();
}
front() {
return this.items[0];
}
isEmpty() {
return this.items.length === 0;
}
}
위의 코드는 배열을 사용하여 우선순위 큐를 구현한 것으로, enqueue
메서드를 통해 요소를 삽입하고, dequeue
메서드를 통해 우선순위가 가장 높은 요소를 제거할 수 있습니다.
마치며
우선순위 큐는 많은 알고리즘 및 데이터 구조에서 사용되며, 자바스크립트를 비롯한 다양한 언어에서 구현 및 활용됩니다. 이를 통해 데이터를 우선순위에 따라 처리하는 데 유용하게 활용할 수 있습니다.
참고문헌:
- GeeksforGeeks - Priority Queue
- JavaScript Data Structures and Algorithms - Third Edition by Sammie Bae