public int solution(String[][] book_time) {
int[][] times = new int[book_time.length][book_time[0].length]; // book_time을 분으로 바꿔서 저장
for(int i = 0; i < book_time.length; i++) {
String start = book_time[i][0];
String[] arr = start.split(":");
int startNum = Integer.parseInt(arr[0]) * 60 + Integer.parseInt(arr[1]);
String end = book_time[i][1];
arr = end.split(":");
int endNum = Integer.parseInt(arr[0]) * 60 + Integer.parseInt(arr[1]);
times[i][0] = startNum;
times[i][1] = endNum;
}
// 먼저 예약한 순으로 정렬
Arrays.sort(times, (o1, o2) -> {
return o1[0] - o2[0];
});
ArrayList<Integer> arr = new ArrayList<>();
boolean hasRoom = false;
for(int i = 0; i < book_time.length; i++) {
hasRoom = false;
int currentStart = times[i][0];
int currentEnd = times[i][1] + 10;
if(arr.size() == 0) {
arr.add(currentEnd);
} else {
for (int j = 0; j < arr.size(); j++) {
if (arr.get(j) <= currentStart) { // 사용 가능한 방이 있으면 그 방에 배정
arr.remove(j);
arr.add(j, currentEnd);
Collections.sort(arr);
hasRoom = true;
if(hasRoom) {
break;
}
}
}
if(hasRoom == false) { // 사용 가능한 방이 없으면 방 새로 배정
arr.add(currentEnd);
Collections.sort(arr);
}
}
}
return arr.size();
}