알고리즘 문제풀이/백준
[C++] 백준 11000 - 방 배정
jiminai
2023. 8. 7. 22:21
반응형
https://www.acmicpc.net/problem/11000
11000번: 강의실 배정
첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109)
www.acmicpc.net
<알고리즘 분류>
- 정렬
- 우선순위 큐(Priority Queue)
<풀이>
1. 백준 사이트에 나와 있는 예제 입력을 활용하여, 그림으로 쉽게 표현했다. 자세한 것은 그림을 확인하길 바란다.
<코드>
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <cstring>
#include <set>
using namespace std;
int N;
pair <int, int> p[200000];
int main(){
cin >> N;
for (int i=0; i<N; i++){
int x, y;
cin >> x >> y;
p[i].first = x;
p[i].second = y;
}
sort(p, p+N);
priority_queue <int, vector<int>, greater<int>> pq;
pq.push(p[0].second);
for (int i=1; i<N; i++){
if (p[i].first < pq.top()){ //top에 있는 것과 시간이 겹친다면(강의실추가)
pq.push(p[i].second);
}
else{ //겹치지 않는다면
pq.pop();
pq.push(p[i].second);
}
}
cout << pq.size();
}
반응형