Dolphins의 HelloWorld

[백준]Baekjoon1931(Greedy Algorithm) 본문

Algorithm/baekjoon문제풀이

[백준]Baekjoon1931(Greedy Algorithm)

돌핀's 2018. 8. 28. 12:37

문제링크 : https://www.acmicpc.net/problem/1931




이 문제에 대해 고민을 하다 보면 결국 사용할 수 있는 최대의 회의 수를 출력하기 위해서


회의를 마치는 시간이 중요하다는 것을 알게된다.


회의가 마치는 순서를 오름차순으로 정렬한 후 그 회의가 시작한 시간이 그 전 회의가 끝난 


시간과 겹치지 않도록 하면 최대한의 회의 숫자를 구할 수 있다.


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

using namespace std;

typedef struct {
	long long start;
	long long end;
}time;

bool cmp(time t1, time t2) {
	if (t1.end < t2.end) return true;
	else if (t1.end == t2.end)
		return t1.start < t2.start;
	else
		return false;
}

int main()
{
	int N;
	scanf("%d", &N);

	vector<time> v;
	time t;
	for (int i = 1; i <= N; i++) {
		scanf("%lld %lld", &t.start, &t.end);
		v.push_back(t);
	}
	sort(v.begin(), v.end(), cmp);
	int count = 1;

	long long x = v[0].end;
	for (int i = 1; i < v.size(); i++) {
		if (v[i].start>=x) {
			count++;
			x = v[i].end;
		}
	}

	printf("%d\n", count);
}


Comments