호텔을 운영 중인 코니는 최소한의 객실만을 사용하여 예약 손님들을 받으려고 합니다. 한 번 사용한 객실은 퇴실 시간을 기준으로 10분간 청소를 하고 다음 손님들이 사용할 수 있습니다.
예약 시각이 문자열 형태로 담긴 2차원 배열 book_time이 매개변수로 주어질 때, 코니에게 필요한 최소 객실의 수를 return 하는 solution 함수를 완성해주세요.
function solution(book_time) {
const room = [];
book_time.sort();
book_time.forEach(time => {
const s = time[0].split(':');
const e = time[1].split(':');
const startTime = parseInt(s[0] * 60) + parseInt(s[1]);
const endTime = parseInt(e[0] * 60) + parseInt(e[1]) + 10;
const idx = room.findIndex(r => r <= startTime);
if(idx === -1) {
room.push(endTime);
}else room[idx] = endTime;
});
return room.length;
}
전형적인 문자열 문제이다.
문자열을 split
으로 나누어서 분단위로 변환시켜주었다.
처음 forEach
를 돌면 room
배열에는 endTime
이 들어간다.
만약 room
배열에 있는 endTime
이 새로 들어오는 startTime
보다 작을 경우는 퇴실이 완료된 상태이므로 새로운 endTime
으로 교체한다.