algorithm/Sorting, Binary Search

[C++] BOJ 1931 회의실 배정

gartenhh 2021. 5. 7. 23:23

문제

www.acmicpc.net/problem/1931

 

1931번: 회의실 배정

(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.

www.acmicpc.net

코드

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;

int n, cnt = 0;

int main() {
	cin >> n;
	vector<pair<int, int>> v;
	int a, b;
	for (int i = 0; i < n; i++) {
		cin >> a >> b;
		v.push_back({ b,a });
	}

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

	int ft = 0; //finish time
	for (int i = 0; i < n; i++) {
		if (v[i].second < ft) continue;
		ft = v[i].first;
		cnt++;
	}
	cout << cnt;
}

풀이방법

회의시간을 빨리 시작해서 빨리 끝나는 순서대로 정렬하고, 빨리 끝나는 것부터 차례대로 배정해준다.

고민과정

배열로 풀려다가 너무 복잡해져서 벡터를 이용했다.