본문 바로가기

알고리즘 문제

[알고리즘 문제/C++]백준 1931번 : 회의실 배정

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

 

1931번: 회의실 배정

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

www.acmicpc.net

그리디 알고리즘을 활용해 풀 수 있습니다.

코드

#include <cstdio>
#include <vector>
#include <utility>
#include <algorithm>

using namespace std;
bool sortbysec(const pair<int,int> &a, const pair<int,int> &b) {
    return (a.second < b.second);
}
int main() {

    int N, i, n1, n2, min, cnt = 0;

    scanf("%d", &N);
    vector <pair <int, int> > v;

    for (i = 0; i < N; i++) {
        scanf("%d %d", &n1, &n2);
        v.push_back(make_pair(n1, n2));
    }
    sort(v.begin(), v.end());
    sort(v.begin(), v.end(), sortbysec);

    min = v[0].second;
    cnt++;

    for (i = 1; i < N; i++) {
        if (v[i].first >= min) {
            min = v[i].second;
            cnt++;
        }
    }

    printf("%d\n", cnt);
    return 0;
}