백준 11000 강의실 배정

2023. 6. 18. 01:56코딩 공부 연습

반응형

강의실 배정 문제다. 그리디를 통해 구현해내면 되는데, 방법은 금방 떠올릴 수 있는데 priority queue 를 사용하는 구현에 있어서 애를 좀 먹었다.

priority_queue <int, vector<int>, greater<int> > pq;

 

이렇게 적는게 priority queue 를 작은 순으로 만드는 방법이다.

 

  pq.push(arr[0].second);
  for (int i = 1; i < n; i++)
  {
    pq.push(arr[i].second);
    if (pq.top() <= arr[i].first)
      pq.pop();
  }

정렬한 순으로 끝나는 시간을 pq에 차례로 넣어줄 것인데, 만약 pq 에서 가장 top 의 값 (가장 먼저 끝나는 수업) 보다 현재 넣고자 하는 강의가 시작하는 시간이 더 크거나 같다면, pq 의 top 을 없애주고 새로운 강의를 집어 넣어주는 방식으로 구현할 수 있었다.

'코딩 공부 연습' 카테고리의 다른 글

백준 1920 수 찾기  (0) 2023.06.22
백준 1057 토너먼트  (1) 2023.06.20
백준 1992 쿼드 트리  (0) 2023.05.26
DFS, BFS  (0) 2023.05.17
DP 문제 풀이 유형  (1) 2023.05.15