용꿀
꼬마개발자허니
용꿀
전체 방문자
오늘
어제
  • 분류 전체보기 (250)
    • 개발 (77)
      • 스프링 입문 (7)
      • 스프링 기본 (9)
      • ToDo List using JPA (2)
      • 스프링 개념 (9)
      • 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (8)
      • 스프링 MVC (3)
      • CS (21)
      • 개발 팁 (8)
      • 스프링 MSA (5)
      • 곰터뷰🐻 (5)
    • 알고리즘 (169)
      • 알고리즘 문제 풀이 (165)
    • 잡동사니 (1)
      • 노래 가사 (1)
hELLO · Designed By 정상우.
용꿀

꼬마개발자허니

(C++) 백준 1931번 - 회의실 배정
알고리즘/알고리즘 문제 풀이

(C++) 백준 1931번 - 회의실 배정

2023. 5. 14. 03:05

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

 

1931번: 회의실 배정

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

www.acmicpc.net

문제 풀이

그리디 알고리즘을 활용한 문제이다.

회의실을 사용할 수 있는 회의의 개수를 최대로 하기 위해선 종료 시간이 가장 이른 순으로 사용하게 하면 된다.

그렇기에 회의가 종료되는 시간의 오름차순으로 정렬을 해놓고 시작 시간이 지나지 않은 가장 빠른 회의가 회의실을 사용하도록 하면 된다.

#include <iostream>
#include <algorithm>
#define X first
#define Y second

using namespace std;

pair<int,int> meetings[100005];
int n, cnt, cur, mn;

bool compare(pair<int,int>a, pair<int,int>b){
    if(a.Y != b.Y) return a.Y < b.Y;
    else return a.X < b.X;
}

int main() {
    ios::sync_with_stdio(0);  
    cin.tie(0);
    cout.tie(0);
    
    cin >> n;

    int x, y;
    for(int i = 0; i < n; i++){
        cin >> x >> y;
        meetings[i] = {x,y};
    }
    sort(meetings, meetings+n, compare);
    int cur = 0;
    for(int i = 0; i < n; i++){
        if(cur > meetings[i].X) continue;
        cur = meetings[i].Y;
        cnt++;
    } 
    cout << cnt;
}

'알고리즘 > 알고리즘 문제 풀이' 카테고리의 다른 글

(C++) 백준 1026번 - 보물  (0) 2023.05.14
(C++) 백준 2217번 - 로프  (0) 2023.05.14
(C++) 백준 11047번 - 동전 0  (0) 2023.05.13
(C++) 백준 1654번 - 랜선 자르기  (0) 2023.05.08
(C++) 백준 18870번 - 좌표 압축  (0) 2023.05.08
    '알고리즘/알고리즘 문제 풀이' 카테고리의 다른 글
    • (C++) 백준 1026번 - 보물
    • (C++) 백준 2217번 - 로프
    • (C++) 백준 11047번 - 동전 0
    • (C++) 백준 1654번 - 랜선 자르기
    용꿀
    용꿀

    티스토리툴바