결론: 강의의 시작 시간과 끝나는 시간을 고려해 최대한 적은 강의실을 사용하도록 스케줄링하라.
끝나는 시간을 우선으로 생각하여 접근해야 한다.
-> 우선순위 큐를 써보자!
📌 우선순위 큐에 남아있는 시간의 개수가 최종적으로 필요한 강의실의 수다.
#include <bits/stdc++.h>
using namespace std;
int main(){
int n, tmp1, tmp2;
vector<pair<int, int>> st;
priority_queue<int, vector<int>, greater<int>> t;
cin >> n;
while(n--){
cin >> tmp1 >> tmp2;
st.push_back(make_pair(tmp1, tmp2));
}
sort(st.begin(), st.end());
for(int i = 0; i < st.size(); i++){
t.push(st[i].second);
if(t.top() <= st[i].first) t.pop();
}
cout << t.size();
return 0;
}