본문 바로가기
프로그래밍 언어/Java

[Java] 우선순위 큐(Priority Queue) 예제

by 까망 하르방 2021. 2. 23.
반응형

 우선순위 큐(Priority Queue)

※ 큐(Queue)는 선입선출(First In First Out)

우선순위 큐(Priority Queue)는 들어온 순서와는 상관 없이 우선순위가 높은 데이터가 먼저 이다.

1. 숫자가 큰 순서(내림차순)

2. 숫자가 동일하면 이름 순(A-Z) 

※ 우선순위 큐는 내부적으로 Heap 구조를 이루고 있습니다.

* Comparable 구현

 

import java.util.PriorityQueue;
public class Main {
     public static void main(String[] args) {
           PriorityQueue<Person> pq = new PriorityQueue<>();
           pq.offer(new Person("banana", 10));
           pq.offer(new Person("apple", 10));
           pq.offer(new Person("orange", 20));
           while(!pq.isEmpty()) {
                System.out.println(pq.poll());
           }
     }
}
class Person implements Comparable<Person> {
     String name;
     int age;
     Person(String name, int age) {
           this.name = name;
           this.age = age;
     }
     @Override
     public int compareTo(Person target) {
           // 큰 숫자가 먼저 (내림차순)
           if (this.age > target.age)
                return -1;
           else if (this.age < target.age)
                return 1;
           else {
                // A-Z 오름차순
                return this.name.compareTo(target.name);
           }
     }
     @Override
     public String toString() {
           return name + " (" + age + ")";
     }
}

 

Reference

[BOJ] 10814 나이순 정렬 

 

[BOJ] 백준 10814 나이순 정렬

출처:  https://www.acmicpc.net/problem/10814  Input 3 21 Junkyu 21 Dohyun 20 Sunyoung  Output 20 Sunyoung 21 Junkyu 21 Dohyun 회원을 나이 순, 나이가 같으면 가입한 순 정렬하는 문제입니다. 우선순..

zoosso.tistory.com

[BOJ] 16236 아기 상어 

 

[BOJ] 백준 16236 아기상어

삼성 SW 코딩 테스트 준비(A형) 삼성 SW 기출 모음 출처:  https://www.acmicpc.net/problem/16236  Input 4 4 3 2 1 0 0 0 0 0 0 9 0 1 2 3 4  Output 14 ① 처음 상어의 크기 = 2 ② 상어는 자신의 크기보..

zoosso.tistory.com

[BOJ] 8979 올림픽 

 

[BOJ] 백준 8979 올림픽

출처: https://www.acmicpc.net/problem/8979  Input 4 3 1 1 2 0 2 0 1 0 3 0 1 0 4 0 0 1  Output 2 국가별로 금, 은, 동 개수로 올림픽 순위를 구해보려고 합니다. 1. 금메달 수가 더 많은 국가 2. 금메달..

zoosso.tistory.com

[BOJ] 11651 좌표 정렬하기 2 

 

[BOJ] 백준 11651 좌표 정렬하기 2

출처:  https://www.acmicpc.net/problem/11651  Input 5 0 4 1 2 1 -1 2 2 3 3  Output 1 -1 1 2 2 2 3 3 0 4 - 우선순위 큐와 Comparable을 이용해 구현 import java.io.*; import java.util.*; public clas..

zoosso.tistory.com

 

 

 

반응형

댓글