#
문제 설명
최소한의 객실만을 사용
예약 손님들을 받기
조건
매개 변수
book_time
반환값
book_time | result |
---|---|
[["15:00", "17:00"], ["16:40", "18:20"], ["14:20", "15:20"], ["14:10", "19:20"], ["18:20", "21:20"]] | 3 |
[["09:10", "10:10"], ["10:20", "12:20"]] | 1 |
[["10:20", "12:30"], ["10:20", "12:30"], ["10:20", "12:30"]] | 3 |
function solution(book_time) {
book_time.sort();
const room = [];
book_time.forEach(([start, end]) => {
const startTime = getTime(start);
const idx = room.findIndex((e) => e <= startTime);
// 사용 중인 room 에서 다시 사용가능한 시간이
// 새로운 시작 시간보다 작으면 업데이트
// 해당 요소가 없으면 추가
if (idx === -1) room.push(getTime(end) + 10);
else room[idx] = getTime(end) + 10;
});
return room.length;
}
// 계산하기 쉽게 분 단위로 반환
function getTime(endTime) {
const next = endTime.split(":");
return Number(next[0]) * 60 + Number(next[1]);
}
풀이
정렬 후 그리디를 통해 solution 구하기
- 정렬, 탐욕스러운 접근 방식 및 배열의 조합을 사용하여
각 방의 예약 종료 시간을 추적- 배열은 각 객실에서 마지막 예약의 종료 시간을 추적하는 데 사용