algorithm-study-of-GN / problem-of-coding-interview

코딩 인터뷰 완전 분석의 문제 해결 저장소입니다.
MIT License
16 stars 4 forks source link

회의실배정 #40

Open alexswshin opened 8 years ago

alexswshin commented 8 years ago

한 개의 회의실이 있는데 이를 사용하고자 하는 n개의 회의들에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 최대수의 회의를 찾아라. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다.

예제 input 11 1 4 3 5 0 6 5 7 3 8 5 9 6 10 8 11 8 12 2 13 12 14

예제 output 4

============ Source Code ============

include

include

include

using namespace std; struct Meeting { int begin, end; }; bool cmp(const Meeting &u, const Meeting &v) { if (u.end == v.end) { return u.begin < v.begin; } else { return u.end < v.end; } } int main() { int n; scanf("%d",&n); vector a(n); for (int i=0; i<n; i++) { scanf("%d %d",&a[i].begin,&a[i].end); } sort(a.begin(), a.end(), cmp); int now = 0; int ans =0 ; for (int i=0; i<a.size(); i++) { if (now <= a[i].begin) { now = a[i].end; ans += 1; } } printf("%d\n",ans); return 0; }