teddy8 Full Stack Software Engineer

[BaekJoon][Greedy] 1931. 회의실배정

2019-06-27
teddy8

문제

URL : https://www.acmicpc.net/problem/tag/%EA%B7%B8%EB%A6%AC%EB%94%94%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98


소스코드

/* 문제 : [1931] 회의실배정
[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
[설명]
첫째 줄에 회의의 수 N이 주어진다.
둘째 줄부터 회의 시작시간, 회의 끝나는 시간이 주어진다.
이 때, 최대 사용할 수 있는 회의 수를 출력해라.
*/
#include <iostream>
#include <queue>

using namespace std;

struct room {
	int start;
	int end;
	room(int start, int end) :start(start), end(end) {};
};

bool operator < (room r1, room r2) {
	if (r1.end != r2.end)
		return r1.end > r2.end;
	else
		return r1.start > r2.start;
}

int main()
{
	priority_queue<room> pQue;
	int n;						// 회의 수
	int compareNum = -1;		// 비교하는 변수
	int count = 0;

	cin >> n;

	// 회의실 시작, 종료시간 입력
	for (int i = 0, s, k; i < n; i++) {
		cin >> s >> k;
		pQue.push(room(s, k));
	}

	while (!pQue.empty()) {
		room r = pQue.top();
		pQue.pop();

		if (compareNum <= r.start) {
			compareNum = r.end;
			count++;
		}
	}

	cout << count;
	return 0;
}


Comments

Content