[프로그래머스/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() - 우선순위 큐에 포함되어 있는 원소의 수를 반환
'코딩테스트-알고리즘 > 자료구조' 카테고리의 다른 글
배열(Array)과 리스트(List)의 차이 + ArrayList (0) | 2023.12.23 |
---|