function solution(book_time) {
book_time.sort();
const rooms = [];
for (const [itStr, otStr] of book_time) {
const [it, ot] = [calculateMin(itStr), calculateMin(otStr) + 10];
let minOt = Infinity;
let roomNumber;
for (let i = 0; i < rooms.length; ++i) {
if (!rooms[i].length) break;
const last = rooms[i].at(-1);
if (last < minOt) {
minOt = last;
roomNumber = i;
}
}
if (minOt > it) rooms.push([ot]);
else rooms[roomNumber].push(ot);
}
return rooms.length;
}
function calculateMin(str) {
const [h, m] = str.split(':').map(Number);
return h * 60 + m;
}
당장 입퇴실 시간이 겹치지 않는 방에 넣는 것이 아니라, 모든 방의 퇴실 시간을 탐색한 후 가장 좋은 경우의 수를 찾았어야 했다.