Blog
Anki
Java

PriorityQueue, Comparator를 사용하는 방법

    1. 아래 코드의 ? 부분에 Comparator를 사용한 PriorityQueue 선언 방법을 적어주세요.
public class Solution {
    public static void main(String[] args) {
        // 2번째 값을 기준으로 정렬해야 함
        int[][] map = new int[][]{{1, 2}, {2, 1}, {3, 2}, {2, 4}};
        PriorityQueue<int[]> pq = ?;
        for (int[] m : map) {
            pq.add(m);
        }
    }
}
    1. 아래 코드의 ? 부분에 Comparator를 사용한 PriorityQueue 선언 방법을 적어주세요.
public class Solution {
    private static class Node {
        int from, to, cost;
 
        public Node(int from, int to, int cost) {
            this.from = from;
            this.to = to;
            this.cost = cost;
        }
    }
 
    public static void main(String[] args) {
        PriorityQueue<Node> pq = ? ;
    }
}
답 보기
    1. 아래 코드의 ? 부분에 Comparator를 사용한 PriorityQueue 선언 방법을 적어주세요.
public class Solution {
    public static void main(String[] args) {
        // 2번째 값을 기준으로 정렬해야 함
        int[][] map = new int[][]{{1, 2}, {2, 1}, {3, 2}, {2, 4}};
        // comparingDouble, comparingLong 도 존재
        PriorityQueue<int[]> pq = new PriorityQueue<>(Comparator.comparingInt(o -> o[1]));
        for (int[] m : map) {
            pq.add(m);
        }
    }
}
    1. 아래 코드의 ? 부분에 Comparator를 사용한 PriorityQueue 선언 방법을 적어주세요.
public class Solution {
    private static class Node {
        int from, to, cost;
 
        public Node(int from, int to, int cost) {
            this.from = from;
            this.to = to;
            this.cost = cost;
        }
    }
 
    public static void main(String[] args) {
        PriorityQueue<Node> pq = new PriorityQueue<>(Comparator.comparing(node -> node.cost));
    }
}