알고리즘 공부
백준 강의실배정(복습)
컴퓨터과학
2023. 10. 25. 23:58
https://www.acmicpc.net/problem/11000
11000번: 강의실 배정
첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109)
www.acmicpc.net
아 음 지난번에도 우선순위큐의 사용여부에 대한 이해도가 낮아서 해맷던 문제 ㅠ
import java.io.*;
import java.util.*;
public class Main {
private int start;
private int end;
public Main() {
}
public Main(int start,int end) {
this.start=start;
this.end=end;
}
public void start(int start) {
this.start=start;
}
public void end(int end) {
this.end=end;
}
public int start() {
return this.start;
}
public int end() {
return this.end;
}
public static void main(String[] args) throws Exception {
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
ArrayList<Main>lists=new ArrayList<>();
for(int i=0;i<n;i++) {
int s=scan.nextInt();
int e=scan.nextInt();
lists.add(new Main(s,e));
}
Comparator<Main> cmp=(a,b)->{
if(a.start()==b.start()) {
return Integer.compare(a.end,b.end);
}
return Integer.compare(a.start,b.start);
};
Comparator<Integer>gr=(a,b)->Integer.compare(a, b);
Collections.sort(lists,cmp);
PriorityQueue<Integer>q=new PriorityQueue<>(gr);
for(int i=0;i<n;i++) {
if(q.isEmpty()) {
q.add(lists.get(i).end());
}else {
if(q.peek()<=lists.get(i).start) {
q.poll();
q.add(lists.get(i).end());
}else {
q.add(lists.get(i).end());
}
}
}
System.out.print(q.size());
}
}