반응형
포인트
1. 회의실 배정 문제는 그리디 알고리즘 대표문제
2. 제일 많은 회의를 잡으려면 어떻게 해야 하는가? "끝나는 시간을 우선순위로 정렬을 하여"횟수를 세어준다.
"현재 끝나는 시간" 이 "다음 시작하는 시간" 작거나 같으면 "현재 끝나는 시간"을 "다음 끝나는" 시간으로 바꾸고
답을 1개 늘려준다.
🧶문서는 항상 수정 될 수 있습니다. 비판은 환영합니다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<pair<int, int>> vc;
while (n--) {
int a, b;
cin >> a >> b;
vc.push_back({b, a});
}
sort(vc.begin(), vc.end());
int pointer = 0;// 현재 끝나는 시간
int answer = 0;
//ele.first 다음 끝나는 시간
//ele.second 다음 시작하는 시간
for (auto ele : vc) {
if (pointer <= ele.second) {
pointer = ele.first;
answer += 1;
}
}
cout << answer << '\n';
}
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘] 이진 변환 반복하기 (0) | 2020.11.06 |
---|---|
[알고리즘] c++ cpp 단속카메라 (0) | 2020.11.04 |
[알고리즘] 다리를 지나는 트럭 (0) | 2020.11.04 |
[알고리즘] c++ cpp 바이러스 (0) | 2020.10.29 |
[알고리즘] c++ cpp 가장 긴 증가하는 부분 수열 3 (0) | 2020.10.28 |
댓글