3. 유의 할 것
- 입력값이 20만개 이므로 logN형 자료구조를 사용해야 한다.
- 나는 시간을 줄이기 위해서 주로 map,set을 사용했는데 set의 경우 균형 이진 트리이므로 검색은 빠르지만 삽입 & 삭제가 느리다. (삽입,삭제는 log(N))
- 우선순위 큐는 Heap을 사용하므로 set보다 더 빠르다. 삽입 삭제도 logN 이므로 따라서 우선순위 큐를 자주 쓰도록 하자.
4. 코드
더보기
#include<iostream>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int N,s,e;
vector<pair<int,int> > v;
cin >> N;
for(int i=0;i<N;i++) {
cin >> s >> e;
v.push_back({s,e});
}
sort(v.begin(),v.end());
priority_queue<int,vector<int>,greater<vector<int>> > q; //강의실 별 끝나는 시간 저장
q.push(v[0].second);
int i =1;
for(int i=1;i<N;i++) {
//i번째 수업을 넣을 수 있는 강의실 찾기
//가장 빨리 끝나는 수업보다 더 일찍 시작하면 강의실 새로 배정
if( v[i].first < q.top()) {
q.push(v[i].second);
}
// 수업 종료시간 이후에 수업이 시작하면 해당 강의실에서 수업 시작
else {
q.pop();
q.push(v[i].second);
}
}
cout << q.size();
return 0;
}
'알고리즘 > 백준' 카테고리의 다른 글
[1261] 알고스팟(C++) (0) | 2020.10.16 |
---|---|
[2606] 바이러스 (0) | 2020.10.10 |
[16235]나무 재테크(C++/구현) (2) | 2020.07.02 |
[백준] DP (0) | 2020.07.02 |
[9251] LCS(C++) (0) | 2020.06.26 |