본문 바로가기
공부-코딩테스트/Java-코딩테스트-편의기능

자바 : 우선순위 큐 사용법

by 령과 2022. 8. 13.

자바에서는 Heap을 위한 클래스가 따로 있진 않다. 우선순위 큐를 통해서 Heap기능을 대신할 수 있다.

 

우선순위 큐 :  우선순위 큐에서, 높은 우선순위를 가진 원소는 낮은 우선순위를 가진 원소보다 먼저 처리되는 Queue

  • 특정조건에 맞게 queue를 배치하여 들어갈 때 우선순위 조건에 맞게 queue가 설정
  • 주어진 원소들 중에서 조건에 맞게 순서대로 뽑아내고자 할 때 사용할 수 있다.

사용 방법

import java.util.PriorityQueue;
		PriorityQueue<Integer> Q = new PriorityQueue<>((e1, e2) -> {
				//조건 등등
				return e1 - e2;//예시
		});

해당 사용방식은 람다식을 사용한 형식으로 아마 코딩테스트를 하면 이런 방법으로 사용하지 않을까 싶다.

객체에 적용하고자 하면 Comparable<클래스>를  implements해야하고, 

public int compareTo(객체 o){

return ~~;

} 오버라이드 메소드를 구현해야 한다.

 

푸는데 사용한 문제 예시

https://www.acmicpc.net/problem/11286

 

11286번: 절댓값 힙

첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0

www.acmicpc.net

https://github.com/lyeong-gwa/algorithm_study/tree/main/%EB%B0%B1%EC%A4%80/Silver/11286.%E2%80%85%EC%A0%88%EB%8C%93%EA%B0%92%E2%80%85%ED%9E%99

 

GitHub - lyeong-gwa/algorithm_study: 알고리즘 공부!

알고리즘 공부! Contribute to lyeong-gwa/algorithm_study development by creating an account on GitHub.

github.com

 

댓글