우선순위 큐(Priority Queue)는 저장되는 데이터마다 우선순위(priority) 값을 함께 관리하는 자료구조로, 일반적인 큐(Queue)를 확장한 개념입니다.
일반적인 큐가 먼저 들어온 요소가 먼저 나가는 FIFO(First In, First Out) 방식으로 동작하는 것과 달리, 우선순위 큐에서는 요소를 제거할 때 우선순위가 가장 높은 항목이 항상 먼저 빠져나가게 됩니다.
C#에서 우선순위 큐 선언하기
그렇다면 C#에서는 우선순위 큐를 어떻게 정의할 수 있을까요? 아래 코드처럼 제네릭 클래스를 활용해 직접 구현할 수 있습니다. 이때 타입 매개변수 T는 IComparable<T> 인터페이스를 상속받아야 하며, 이를 통해 요소 간의 우선순위 비교가 가능해집니다.
public class MyPriorityQueue<T> where T : IComparable<T> {
}우선순위 큐에 요소 추가하기
이제 우선순위 큐에 실제로 요소를 추가하는 방법을 살펴보겠습니다. 아래 예제에서는 내부적으로 info라는 이름의 제네릭 리스트(List<T>)를 사용하여 요소들을 저장합니다.
public class MyPriorityQueue<T> where T : IComparable<T> {
private List<T> info;
public MyPriorityQueue() {
this.info = new List<T>();
}
}위 코드에서 생성자는 새로운 List<T> 인스턴스를 생성하여 info 필드를 초기화합니다. 여기에 요소를 삽입하는 메서드를 추가하고, IComparable을 활용해 우선순위에 따라 정렬 및 삽입 로직을 확장하면 완전한 형태의 우선순위 큐를 구현할 수 있습니다.