본문 바로가기

알고리즘

[C++] BOJ-1931

 

문제풀이


1. vector에 회의실 시작시간과 끝나는 시간을 저장한다

 

2. 이 때 시작시간을 second, 끝나는 시간을 first에 저장해야한다. 왜냐하면 끝나는 시간을 기준으로 정렬을 해야하기 때문이다.

 

3. 회의가 끝나는 시간과 그 다음으로 빨리 끝나는 회의를 찾아서 회의시간이 겹치지 않는다면 count 해준다.

 

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

using namespace std;

int main(){
	
	ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	vector< pair<int,int> > v;
	int N;
	int a,b;
	
	cin >> N;
	
	for(int i = 0; i<N; i++){
		cin >> a >> b;
		v.push_back(make_pair(b,a));
	}
	
	sort(v.begin(),v.end());

	int early = 0, cnt = 0;
	int meetBegin, meetEnd = 0;
	for(int i = 0; i<v.size(); i++){
		meetBegin = v[i].second;
		meetEnd = v[i].first;
		
		if(early <= meetBegin){
			early = meetEnd;
			cnt++;
		}
	}
	
	cout << cnt;
}

'알고리즘' 카테고리의 다른 글

[C++] BOJ-1966  (0) 2019.10.11
[C++] BOJ-1932  (0) 2019.10.11
[C++] BOJ-1916  (0) 2019.10.11
[C++] BOJ-1699  (0) 2019.10.11
[C++] BOJ-1654  (0) 2019.10.11