[프로그래머스 | Javascript] - 호텔 대실

임홍원·2023년 12월 29일
0
post-thumbnail

프로그래머스 | 할인 행사

📍문제 설명📍

호텔을 운영 중인 코니는 최소한의 객실만을 사용하여 예약 손님들을 받으려고 합니다. 한 번 사용한 객실은 퇴실 시간을 기준으로 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으로 교체한다.

0개의 댓글