[백준] Gold V. 강의실 배정

2024. 10. 12. 11:09·Algorithm/백준

https://www.acmicpc.net/problem/11000

 

문제 유형
  • 정렬
  • 우선순위 큐

 

풀이
import java.io.*;
import java.util.*;

public class boj11000 {
    static int n;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        n = Integer.parseInt(br.readLine());

        PriorityQueue<int []> pq = new PriorityQueue<>((a,b) -> {
            if (a[0] == b[0]) {
                return Integer.compare(a[1], b[1]);
            }
            return Integer.compare(a[0], b[0]);
        });

        PriorityQueue<Integer> end = new PriorityQueue<>();
        end.add(0);

        for(int i = 0; i < n; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());
            pq.add(new int[]{a,b});
        }

        while(!pq.isEmpty()) {
            int [] cur = pq.poll();

            if (end.peek() <= cur[0]) {
                end.poll();
            }
            end.add(cur[1]);
        }
        System.out.println(end.size());
    }
}

 

풀이 과정

우선순위 큐를 두개 만들어준다. 

PriorityQueue<int []> pq

  • 시작시간, 끝나는 시간을 담는다.
  • 오름차순을 해준다.
    • 시작시간이 같다면, 끝나는 시간을 기준으로 오름차순 해준다. ex) (1,2), (1,3) 이런 순서로 정렬해준다.

PriorityQueue<Integer> end

  • 끝나는 시간을 담는 우선순위 큐

pq에 담긴 값들을 하나씩 꺼내면서, pq의 시작시간과 end의 값을 비교해준다.

이 때 종료시간이 시작시간보다 크다면, 새로운 강의실을 이용해야 한다.

  • ex) (1,3) (2,4)일 때 종료시간 3이 2보다 크므로 새로운 강의실을 이용해야함.

종료시간이 시작시간보다 같거나 작다면, 같은 강의실을 이어서 이용할 수 있다.

  • ex) (1,3) (3,5)일 때, 종료시간 3이 시작시간 3과 같으므로 이어서 사용할 수 있다.

 

end에 값인 종료시간 값들은 이렇게 변화할 것이다.

0 -> 3 -> [3,4] -> [4,5] 

결국, 마지막에 end에 담겨있는 종료시간의 수가 강의실의 수를 의미하므로 그대로 출력해주면 된다. 

'Algorithm > 백준' 카테고리의 다른 글

11/2 풀이  (1) 2024.11.02
[백준] Silver I. 회전 초밥  (2) 2024.10.21
[백준] Silver I. 스타트와 링크  (0) 2024.09.26
[백준] Gold IV. 즐거운 단어  (0) 2024.09.26
[백준] Silver II. 꽃길  (0) 2024.09.26
'Algorithm/백준' 카테고리의 다른 글
  • 11/2 풀이
  • [백준] Silver I. 회전 초밥
  • [백준] Silver I. 스타트와 링크
  • [백준] Gold IV. 즐거운 단어
미네구스
미네구스
  • 미네구스
    망구스 blog
    미네구스
  • 전체
    오늘
    어제
    • 분류 전체보기 (174)
      • Kotlin (0)
      • 시큐리티 (0)
        • 개발자 유미 (0)
      • 배포 (4)
      • 회고 (0)
      • Algorithm (143)
        • 프로그래머스 코딩테스트 문제풀이전략 (37)
        • 백준 (66)
        • 프로그래머스 (18)
        • Leetcode (22)
        • 코테 팁 (0)
      • 프로젝트 (8)
        • WEPIK (3)
        • PICK-O (5)
      • CS (1)
        • 운영체제 (5)
        • 네트워크 (1)
        • 면접스터디 (2)
      • 면접 (0)
        • 코테후기 (0)
        • 면접후기 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    백트래킹
    N과 M
    `
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
미네구스
[백준] Gold V. 강의실 배정
상단으로

티스토리툴바