[백준] 1931번 회의실 배정 (Java)

고승우·2023년 2월 20일
0

알고리즘

목록 보기
20/86
post-thumbnail


백준 1931 회의실 배정

비슷한 문제인 강의실과는 접근 방법이 조금 달랐다.

백준 1374 강의실

모든 강의를 진행하기 위해서 필요한 강의실 갯수의 최솟값과 달리 하나의 회의실에서 진행할 수 있는 회의의 최댓값이다. 이 문제는 강의실과 달리 사용할 수 있는 회의의 갯수를 최대로 맞춰야 한다.시작하는 시간이 빨라도 늦게 끝나면 최대 회의의 수를 맞출 수 없기 때문에 회의의 종료시간이 중요하게 작용한다. 따라서 회의 종료시간을 기준으로 우선순위 큐를 만들고 해당하는 회의가 종료한 시간 후에 시작하는지 확인하면 되는 문제였다.

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

public class Main {

    public static void main(String[] args) {
        try {
            int n, cnt = 0, pos;
            int []tmp;
            PriorityQueue <int[]> pq = new PriorityQueue<>((a, b) -> a[1] == b[1] ? a[0] - b[0] : a[1] - b[1]);
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            n = Integer.parseInt(br.readLine());
            for (int i = 0; i < n; i++) {
                StringTokenizer st = new StringTokenizer(br.readLine());
                pq.add(new int[]{Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken())});
            }
            pos = 0;
            while (!pq.isEmpty()) {
                tmp = pq.poll();
                if (pos <= tmp[0]) {
                    cnt++;
                    pos = tmp[1];
                }
            }
            System.out.println(cnt);
        } catch (Exception e) {
        }
    }
}
profile
٩( ᐛ )و 

0개의 댓글