728x90
반응형
그리디 알고리즘 이용 -> 끝나는 시간이 제일 작은 순으로 정렬하여 풀었습니다
#include <iostream>
#include <vector>
#include <utility>
#include <algorithm>
using namespace std;
//회의들을 <시작 시간, 끝나는 시간> 순으로 저장
vector<pair<int, int>> consel;
//끝나는 시간이 빠른 순으로 정렬하되 같으면 먼저 시작하는 순으로 정렬
bool cmp(pair<int, int> a, pair<int, int> b) {
if (a.second == b.second)
return a.first < b.first;
else
return a.second < b.second;
}
int main() {
//최대 회의 수
int conselNum = 0;
//test 케이스
int test;
cin >> test;
//회의 시간을 입력받아 저장
for (int i = 0; i < test;i++) {
int input1, input2;
cin >> input1 >> input2;
consel.push_back(make_pair(input1,input2));
}
//상기 설정한 순서대로 배열
sort(consel.begin(), consel.end(), cmp);
//계속 업데이트 해줄 끝나는 시간
int endTime = -1;
/*모든 배열을 돌며 끝나는 시간이 endTime보다 이후이면
업데이트해주고 최대회의 수 증가*/
for (int i = 0 ; i <test ; i++) {
if (endTime <= consel[i].first) {
endTime = consel[i].second;
conselNum++;
}
}
cout << conselNum;
}
728x90
반응형
'백준 > SILVER' 카테고리의 다른 글
[백준 1012번][C++] 유기농 배추 (0) | 2022.08.05 |
---|---|
[백준 11726번][C++] 2×n 타일링 (0) | 2022.08.04 |
[백준 2667번][C++] 단지 번호 붙이기 (0) | 2022.08.01 |
[백준 1463번][C++] 1로 만들기 (0) | 2022.07.25 |
[백준 1966번][C++] 프린터 큐 (0) | 2022.07.18 |