BOJ 11000 강의실 배정

2020. 10. 2. 23:28·알고리즘/BOJ

www.acmicpc.net/problem/11000

11000번: 강의실 배정

첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (1 ≤ Si < Ti ≤ 109)

www.acmicpc.net

강의실 배정 문제다. 어떻게 하면 최대한 적은 강의실을 사용해서 모든 강의를 할 것인지를 찾아내면 된다.

처음에는 회의실 배정 문제랑 비슷한 문제인 것 같아서 강의 종료 시점을 기준으로 정렬해서 제출했는데 틀렸다.

찾아보니 priority_queue를 사용해서 시작시간을 기준으로 해결해야 한다.

큐는 최소 힙으로 선언해주고 큐에는 종료시간만 삽입한다.

 

대략적인 접근방법은 이렇다.

  • 벡터에 pair로 시작시간, 종료시간을 입력받는다
  • 시작시간을 기준으로 정렬하고 priority_queue에 첫 번째 종료시간을 삽입한다(이때 큐는 최소 힙)
  • 큐의 top이(종료시간이) 배열의 시작시간보다 같다면 큐에 삽입
  • 아니라면 큐를 pop 하고 삽입

이러면 이후에 남아있는 priority_queue의 사이즈가 정답이 된다.

 

간단한 예시로

 

6

 

1 3

2 5

7 8
7 11

4 12

9 10

 

이 들어간다면

 

 

 

이런 식으로 빨강, 초록, 파랑 회의실의 종료 시점이 들어갈 것이다.

 

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;

int main() {
	ios::sync_with_stdio(false); cin.tie(0);

	int n, x, y;
	cin >> n;
	priority_queue<int, vector<int>, greater<>> pq;
	vector<pair<int, int>> ar;
	for (int i = 0; i < n; i++) {
		cin >> x >> y;
		ar.push_back({ x,y });
	}
	sort(ar.begin(), ar.end());

	pq.push(ar[0].second);
	for (int i = 1; i < n; i++) {
		if (pq.top() > ar[i].first) pq.push(ar[i].second);
		else {
			pq.pop();
			pq.push(ar[i].second);
		}
	}
	cout << pq.size() << endl;

	return 0;
}

 

 

'알고리즘 > BOJ' 카테고리의 다른 글

BOJ 13414 수강 신청  (0) 2020.10.07
BOJ 1059 수2  (0) 2020.10.07
BOJ 2437 저울  (0) 2020.10.02
BOJ 6603 로또  (0) 2020.09.29
BOJ 1644 소수의 연속합  (0) 2020.09.23
'알고리즘/BOJ' 카테고리의 다른 글
  • BOJ 13414 수강 신청
  • BOJ 1059 수2
  • BOJ 2437 저울
  • BOJ 6603 로또
khyu2
khyu2
  • khyu2
    dev log
    khyu2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘
        • BOJ
        • Programmers
        • Algorithm
        • SWEA
      • 개발
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    MST
    분할 정복
    구현
    피사노 주기
    GREEDY
    유니온 파인드
    이분탐색
    dfs
    알고리즘
    BOJ
    완전탐색
    냅색
    다익스트라
    소수
    크루스칼
    코딩테스트 연습
    행렬 제곱
    큐
    dp
    팰린드롬
    BFS
    트리
    피보나치 수
    완전 탐색
    이분 탐색
    조합
    SWEA
    우선순위 큐
    시뮬레이션
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
khyu2
BOJ 11000 강의실 배정
상단으로

티스토리툴바