본문 바로가기
알고리즘

[알고리즘] c++ cpp 회의실 배정

by keel_im 2020. 11. 4.
반응형

포인트

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';
}

 

반응형

댓글