백준/골드

[백준 19598번] 최소 회의실 개수 (C++)

게임개발기원 2024. 7. 3. 21:41

문제링크 : https://www.acmicpc.net/problem/19598

 

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = INT_MAX;

int N, B, C; //강의 갯수, 시작 시간, 종료 시간
int cnt=1; //최소 강의실
vector<pii>v;
priority_queue<int, vector<int>, greater<int>> pq;

int main()
{
    ios_base::sync_with_stdio(0); 
	cin.tie(0);

    cin >> N;
    for(int i=0; i<N; i++)
    {
        cin >> B >> C;
        v.push_back({B, C});
    }

    sort(v.begin(), v.end());

    for(int i=0; i<v.size(); i++)
    {
        auto [s, e] = v[i];
        if(pq.empty()) pq.push(e);
        else
        {
            if(pq.top() > s) cnt++; //강의실 추가
            else pq.pop(); //기존 강의실 이용
            pq.push(e);
        }
    }

    cout << cnt;
    
    return 0;
}

 

백준 1374번 강의실 문제와 입력받는 부분만 살짝 다르고 사실상 같은 코드로 통과 가능한 문제이다.

참고링크 : https://blob-thinking.tistory.com/684

 

[백준 1374번] 강의실 (C++)

문제링크 : https://www.acmicpc.net/problem/1374 #include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;int N, A, B, C; //강의 갯수, 강의 번호, 시작 시간, 종료 시간int cnt=1; //최소 강의실vectorv

blob-thinking.tistory.com