문제
19598번: 최소 회의실 개수
2개 회의실로 3개 회의를 모두 진행할 수 있다. 예를 들어, 첫번째 회의실에서 첫번째 회의를 진행하고 두번째 회의실에서 두번째 회의와 세번째 회의를 진행하면 된다. 1개 회의실로 3개 회의
www.acmicpc.net
풀이
그리디, 우선순위 큐
[백준][C++] 11000: 강의실 배정
문제 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net 풀이 그리디, 우선순위 큐 [백준][C++] 2170: 선 긋기 문제 풀
kantatatam.tistory.com
위의 문제와 풀이가 같은 문제
코드
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
vector<pair<int, int>> v;
priority_queue<int, vector<int>, greater<int>> pq;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(NULL);
cout.tie(NULL);
int N;
cin >> N;
int answer = 0;
for (int i = 0; i < N; ++i)
{
int start, end;
cin >> start >> end;
v.push_back(make_pair(start, end));
}
sort(v.begin(), v.end());
for (int i = 0; i < N; ++i)
{
int current_start = v[i].first;
int current_end = v[i].second;
if (!pq.empty())
{
// 가장 빨리 끝나는 수업이 현재 시작하는 강의보다 빨리 끝난다면 같은 강의실을 사용할 수 있다.
if (current_start >= pq.top())
{
pq.pop();
}
}
pq.push(current_end);
answer = max(answer, (int)pq.size());
}
cout << answer;
return 0;
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준][C++] 1766: 문제집 (2) | 2024.03.01 |
---|---|
[백준][C++] 1655: 가운데를 말해요 (0) | 2024.02.28 |
[백준][C++] 4964: 섬의 개수 (1) | 2024.02.26 |
[백준][C++] 15903: 카드 합체 놀이 (0) | 2024.02.22 |
[백준][C++] 10219: Meats On The Grill (0) | 2024.02.20 |