Algorithm/BOJ
[c++][BOJ][1931] 회의실 배정
kim-hasa
2021. 10. 21. 13:54
https://www.acmicpc.net/problem/1931
1931번: 회의실 배정
(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.
www.acmicpc.net
그리디를 적용시키는 문제입니다.
뭐로 그리디를 적용시킬까 고민하다가 종료시간을 기점으로 그리디를 시키면 된다는 것을 알았습니다.
종료시간을 기준으로 pair함수를 이용해서 정렬시킵니다.
그 이후 빨리 시작하는 것부터 시작을 한 후 종료시간을 저장시킵니다.
종료시간 이후로 혹은 같은 시간에 시작하는 것 중 짧은 종료시간을 가진 것을 찾습니다.
이런식으로 이어가면서 개수를 카운트하면 끝 !
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
int n;
cin >> n;
vector<pair<int, int>> arr(n);
for(int i=0; i<n; i++){
cin >> arr[i].second >> arr[i].first;
}
sort(arr.begin(), arr.end());
int index = 0;
int count = 0;
for(int j=0; j<arr.size(); j++)
{
if(arr[j].second >= index){
index = arr[j].first;
count++;
}
}
cout << count;
}