코딩테스트-알고리즘/자료구조

우선순위 큐 (Priority Queue)

닉네임생각즁 2023. 12. 23. 08:38

https://fruits2lim.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4Lv1-%EB%AA%85%EC%98%88%EC%9D%98-%EC%A0%84%EB%8B%B9-1

 

[프로그래머스/Lv.1] 명예의 전당 (1)

https://school.programmers.co.kr/learn/courses/30/lessons/138477 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞

fruits2lim.tistory.com

문제를 통과하고 다른 사람 풀이를 보니 대부분 우선순위 큐로 풀었다 해당 내용을 공부한 후 우선순위 큐를 이용해서 다시 문제를 풀어볼 예정이다

 

 

 

⭐ 일반적인 큐(Queue)는 먼저 집어넣은 데이터가 먼저 나오는 FIFO (First In First Out) 형식의 자료구조이다

 

우선순위 큐 (Priority Queue)

 - 들어간 순서와 상관없이 우선순위가 높은 데이터가 먼저 나오는 자료구조

 - 숫자가 작을수록 먼저 나오는 큐 = 최소힙(Min Heap)

 - 숫자가 클수록 먼저 나오는 큐 = 최대힙(Max Heap)

 

 - 기본형: 우선순위 낮은 숫자(=작은 숫자)가 먼저 나오게

PriorityQueue<Integer> pQ = new PriorityQueue<>();

 

 - 우선순위 높은 숫자(=큰 숫자)가 먼저 나오게

PriorityQueue<Integer> pQ = new PriorityQueue<>(Collections.reverseOrder());

 

 - 사전 순으로 더 빨리오는 문자열이 먼저 나오게

PriorityQueue<String> pq = new PriorityQueue<>();

 

 

 - 기본적인 메서드

  • add() - 우선순위 큐에 원소를 추가. 큐가 꽉 찬 경우 에러 발생
  • offer() - 우선순위 큐에 원소를 추가. 값 추가 실패 시 false를 반환
  • poll() - 우선순위 큐에서 첫 번째 값을 반환하고 제거, 비어있으면 null 반환
  • remove() - 우선순위 큐에서 첫 번째 값을 반환하고 제거, 비어있으면 에러 발생
  • isEmpty() - 우선순위 큐에서 첫 번째 값을 반환하고 제거, 비어있으면 에러 발생
  • clear() - 우선순위 큐를 초기화
  • size() - 우선순위 큐에 포함되어 있는 원소의 수를 반환