[코딩테스트 준비 C++] 회의실 배정

정우·2022년 8월 30일
0
post-thumbnail

오늘 푼 문제

https://www.acmicpc.net/problem/1931

회의실 배정

  • 풀이 방식
    vector<pair<type, type>> v의 방식으로 해당 문제를 풀어보았다.
1. 회의는 한번 시작하면 중간에 중단될 수 없으며 
한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 
2. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 
이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다.

두 조건으로보아 1 - 2 / 2 - 2로 이어질 수 있다.
또, 최소가 아닌 최대로 많은 회의 수를 구해야하므로 시작 시간이 아닌 종료 시간을 기준으로 계산한다.
(End_time <= Start_time)

나의 풀이

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {

	vector<pair<int, int>> result;
	int N;
	int start, end;

	cin >> N;

	for (int i = 0; i < N; i++) {
		cin >> start >> end;
		result.push_back(make_pair(end, start));
	}

	sort(result.begin(), result.end());

	int End_time = result[0].first;
	int count = 1;
	for (int i = 1; i < N; i++) {
		if (End_time <= result[i].second) {
			End_time = result[i].first;
			count++;
		}
	}

	cout << count << endl;

	return 0;
}
profile
개발 일기장

0개의 댓글