https://www.acmicpc.net/problem/1931
이 문제는 약간의 생각이 필요하다.
문제를 읽어보면 결국 끝나는 시간이 빨라야 회의의 갯수를 늘릴 수 있다.
그렇기에 vector를 끝나는 시간이 작은 순으로 먼저 정렬시키면 간단하게 문제를 해결할 수 있다.
#include <bits/stdc++.h>
using namespace std;
/*
* 1개의 회의실 / n개의 회의
* 시작시간과 끝나는 시간이 주어진다.
* 회의를 할 수 있는 최대 갯수를 구하라.
*/
int n, result = 0, endTime = 0;
vector<pair<int, int>>v;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n;
int a, b; //a - 시작시간 , b끝나는 시간.
for (int i = 0; i < n; i++) {
cin >> a >> b;
v.push_back({ b, a }); //끝나는 시간이 작은 순으로 먼저 정렬
}
sort(v.begin(), v.end());
for (auto i : v) {
if (i.second >= endTime) { //시작시간이 이전 회의의 끝난 시간보다 크거나 같다면
//cout << "i strat Time: " << i.second << " endTime : " << i.first << "\n";
result++;
endTime = i.first;
}
}
cout << result;
}
'백준 문제 풀이 & C++ 공부' 카테고리의 다른 글
백준 1987 C++ (1) | 2024.10.18 |
---|---|
백준 14889 C++ (1) | 2024.07.10 |
백준 14469 C++ (0) | 2024.06.30 |
백준 1781 C++ (0) | 2024.06.27 |
백준 2109 C++ (0) | 2024.06.23 |