99클럽 코테 스터디 29일차 TIL [LeetCode] Seat Reservation Manager (Java)

민경·2024년 6월 26일

📃 문제

[LeetCode] Seat Reservation Manager

🖋️ 풀이

1부터 n까지의 좌석 중 작은 수부터 예약 좌석 배정하는 문제

  • 최소힙을 활용한다.
  • 생성자에서 minHeap을 초기화하고, 1부터 i까지의 정수를 추가한다.
  • reserve()가 호출되면, 최소 힙을 poll()하면서 현재 가장 작은 수의 좌석을 배정한다.
  • unreserve(int seatNumber)가 호출되면, seatNumber의 예약이 취소된 것이므로, 힙에 추가한다.

✅ 정답 코드

class SeatManager {
    PriorityQueue<Integer> minHeap;

    public SeatManager(int n) {
        minHeap = new PriorityQueue<>();
        for(int i = 1; i <= n; i++) {
            minHeap.add(i);
        }
    }
    
    public int reserve() {
        return minHeap.poll();
    }
    
    public void unreserve(int seatNumber) {
        minHeap.add(seatNumber);
    }
}
profile
강해져야지

0개의 댓글