구현문제다. 시작시간과 종료시간+10분을 한 값을 구한다음, 만약 종료시간이 다음사람이 예약한 시작시간보다 이르면, 종료시간을 다음사람의 예약 종료시간으로 update해주고, 없으면, room을 하나 더 사용하여, 종료시간을 push해준다. 최종적으로 room의 개수가 답이다.
function solution(book_time) {
var answer = 0;
let room = [];
book_time.sort((a,b)=>{
return parseInt(a[0].replace(':',''))-parseInt(b[0].replace(':',''))
})
book_time.forEach((data,idx)=>{
let startTime = new Date(`2023-01-01 ${data[0]}:00`).getTime();
let finishTime = new Date(`2023-01-01 ${data[1]}:00`).getTime();
let minStartTime = startTime/(60*1000)
let minFinishTime = finishTime/(60*1000)+10
if(idx ===0 ){
room.push(minFinishTime);
}else{
let changed = false;
for(var i = 0; i<room.length; i++){
if(room[i] <= minStartTime){
room[i] = minFinishTime
changed = true;
break;
}
}
if(!changed){
room.push(minFinishTime);
}
}
})
return room.length;
}
new Date()객체를 오랜만에 써서 헷갈렸지만, 금방 다시 생각나서, 주어진 시간을 분으로 바꿔서 풀었다. 시간이 나오는 문제는 웬만하면 new Date()로 바꾸어서 푸는것이 편리한 것 같다.