🧫 문제 분석
✔️ 출처
📖 문제

시작 시간을 기준을 정렬후
빈 방이면 방을 배정해주고, 끝나는 시간 + 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;
}
}

❗ 오답노트 / 필요한 지식
- 자정 넘어가는거 체크 안해서 약간 틀렸었는데 바로 고쳤다.
'programmers > Lv 2' 카테고리의 다른 글
다리를 지나는 트럭 [자바] (0) | 2025.02.04 |
---|---|
숫자 카드 나누기 [자바] (1) | 2025.02.01 |
마법의 엘리베이터 [자바] (0) | 2025.01.30 |
쿼드압축 후 개수 세기 [자바] (0) | 2025.01.23 |
숫자 변환하기 [자바] (0) | 2025.01.21 |