programmers/Lv 2

호텔 대실 [자바]

Meluu_ 2025. 2. 1. 11:00

 

🧫 문제 분석

✔️ 출처

호텔 대실 level 2

📖 문제

 

시작 시간을 기준을 정렬후

빈 방이면 방을 배정해주고, 끝나는 시간 + 10 을 해준다.

 

그리고 다음 예약자는 우선, 배정된 방중 퇴실후 시간대인 방을 찾는다.

없다면 새로운 빈 방을 배정해준다. 

 

이를 반복하면 된다. 

 

예약 시간이 자정을 넘어가는 경우는 없다. 

 


🔅 문제 풀이

import java.util.*;

class Solution {
    public int solution(String[][] book_time) {
        // 최대 룸 개수, 시-분 
        Integer[] time = new Integer[1000];
        // 시작 시간 순 정렬
        Arrays.sort(book_time, (o1, o2) -> o1[0].compareTo(o2[0]));
        int answer = 0;
        
        for (String[] checkOut : book_time) {
            String[] start = checkOut[0].split(":");
            String[] end = checkOut[1].split(":");
            
            // 분으로 계산
            int startTime = Integer.parseInt(start[0]) * 60 + Integer.parseInt(start[1]);
            int endTime = Integer.parseInt(end[0]) * 60 + Integer.parseInt(end[1]);
            
            for (int i = 0; i < time.length; i++) {
                // 빈 방이라면
                if (time[i] == null) {
                    time[i] = (endTime + 10) ; // 예약 시각이 자정을 넘기는 경우는 없음
                    answer++;
                    break;
                    
                    // 방이 채워져 있고, 예약시간이 체크아웃 후 시간이라면
                } else if (time[i] <= startTime) {
                    time[i] = (endTime + 10) ;
                    break;
                }
                // 현재 방이 이미 예약자가 있고, 체크아웃 전 시간이라면 다음 방으로 이동
            }
        }
        
        return answer;
    }
}

 

❗ 오답노트 / 필요한 지식

  1. 자정 넘어가는거 체크 안해서 약간 틀렸었는데 바로 고쳤다. 

'programmers > Lv 2' 카테고리의 다른 글

다리를 지나는 트럭 [자바]  (0) 2025.02.04
숫자 카드 나누기 [자바]  (1) 2025.02.01
마법의 엘리베이터 [자바]  (0) 2025.01.30
쿼드압축 후 개수 세기 [자바]  (0) 2025.01.23
숫자 변환하기 [자바]  (0) 2025.01.21