본문 바로가기
항해

[DAY55] 99클럽 코딩테스트 JAVA 백준 최소 회의실 개수 19598번

by neVerThe1ess 2025. 2. 15.

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

 

🌕 최종코드

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


public class Main {
	
	public static int N,K;
	public static Node[] node;
	public static int answer =0 ;
    public static void main(String[] args) throws IOException{
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	
    	StringTokenizer st = new StringTokenizer(br.readLine());
    	N = Integer.parseInt(st.nextToken());
    	node = new Node[N];
    	
    	for(int i=0;i<N;i++) {
    		st = new StringTokenizer(br.readLine());
    		int startTime = Integer.parseInt(st.nextToken());
    		int endTime =Integer.parseInt(st.nextToken());
    		node[i] = new Node(startTime, endTime); 
    	}
    	
    	Arrays.sort(node);
    	
    	PriorityQueue<Integer> pq = new PriorityQueue<Integer>();
    	pq.offer(node[0].endTime);
    	
    	for(int i=1;i<N;i++) {
    		if(pq.peek() <= node[i].startTime) {
    			pq.poll();
    		}
    		pq.add(node[i].endTime);
    	}
    	System.out.println(pq.size());

    }
}

class Node implements Comparable<Node>{
	int startTime;
	int endTime;
	public Node(int startTime, int endTime) {
		this.startTime = startTime;
		this.endTime = endTime;
	}
	
	@Override
	public int compareTo(Node other) {
		if(this.startTime == other.startTime) 
			return this.endTime - other.endTime;
		
		return this.startTime - other.startTime;
	}
}