자바 우선순위큐- 배열 넣기

jiwon·2022년 8월 9일
1

코테용 자바

목록 보기
1/2
post-custom-banner

package backjoon;

import java.util.*;
import java.io.*;

 
public class Main {
		 
		public static void main(String [] args) throws Exception{
			 PriorityQueue <Integer> q=new PriorityQueue<>();
			 q.add(3);
			 q.add(5);
			 q.add(2);
			 //2 3 5 출력
			 while(!q.isEmpty()) {
				 System.out.println(q.poll());
			 }
		}
 
}

자바에서 우선순위 큐는 낮은 값부터 뱉는다.

package backjoon;

import java.util.*;
import java.io.*;

 
public class Main {
		 
		public static void main(String [] args) throws Exception{
			 PriorityQueue <Integer> q=new PriorityQueue<>(new Comparator<Integer>() {

				@Override
				public int compare(Integer o1, Integer o2) {
					// TODO Auto-generated method stub
					return o2-o1;
				}
				 
			 });
			 q.add(3);
			 q.add(5);
			 q.add(2);
			 //5 3 2출력
			 while(!q.isEmpty()) {
				 System.out.println(q.poll());
			 }
		}
 
}

정렬에 여러 조건을 붙일때와 마찬가지로, Comparator를 이용하면 우선순위를 바꿀 수 있다.

PriorityQueue <int []> q=new PriorityQueue<>(new Comparator<int []>() {
				@Override
				public int compare(int[] o1, int[] o2) {
					// TODO Auto-generated method stub
					if (o1[0]==o2[0]) return o1[1]-o2[1];
					return o1[0]-o2[0];
				}
			 });

특히 유의해야할 점은!! 우선순위큐에 배열을 넣는 경우, 반드시 Comparator를 써야 한다는 것이다. PriorityQueue <int []> q=new PriorityQueue<>(); 하게 되면 add하는 과정에서 에러가 발생한다.

참고로 1에서 2빼면 오름차순(1,2,3...)이고 2에서 1빼면 내림차순(3,2,1..)이다.

profile
개발 공부합니다. 파이팅!
post-custom-banner

0개의 댓글