우선순위 큐
book_time
배열을 정렬 한다. rooms
라는 배열에 의 값을 넣어두고 이보다 현재 시작값이 동일하거나 크면 현재 그 방에 들어갈 수 있다.rooms
배열을 오름차순 정렬해주었다. rooms
를 매번 정렬하는 이유는 가장 빨리 종료되는 방에 다음 예약이 들어갈 수 없는 경우, 그때는 추가로 객실을 하나더 구해야한다는 것을 알 수 있기 때문이다.sort()
할때는 디폴트 같은 거 없으니 꼭 안에 우선순위 식 써주기!function solution(book_time) {
let book_time_min = book_time.map((el)=> {
let [st_h, st_m] = el[0].split(":");
let [ed_h, ed_m] = el[1].split(":");
let st_time = st_h*1*60 + st_m*1;
let ed_time = ed_h*1*60 + ed_m*1;
return [st_time, ed_time];
});
book_time_min.sort((a,b)=>a[0]-b[0]);
const rooms = [book_time_min[0][1]+10];
for(let i=1; i<book_time_min.length; i++) {
let curr_time_st = book_time_min[i][0];
if(rooms[0]>curr_time_st) {
rooms.push(book_time_min[i][1]+10);
rooms.sort((a,b)=>a-b);
} else {
for(let j=rooms.length-1; j>=0; j--) {
if(rooms[j]<=curr_time_st) {
rooms[j] = book_time_min[i][1]+10;
rooms.sort((a,b)=>a-b);
break;
}
}
}
}
return rooms.length;
}