본문 바로가기
백준 문제 풀이 & C++ 공부

백준 1931 C++

by daisy0461 2024. 7. 1.

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++ 공부' 카테고리의 다른 글

백준 14889 C++  (1) 2024.07.10
백준 14469 C++  (0) 2024.06.30
백준 1781 C++  (0) 2024.06.27
백준 2109 C++  (0) 2024.06.23
백준 1202 C++  (0) 2024.06.21