[프로그래머스] Lv2. 호텔 대실 - JavaScript

이상돈·2023년 5월 15일
0
post-thumbnail

문제분류 : 코팅테스트 연습

난이도 : Level 2

출처 : 프로그래머스 - 호텔 대실

문제

제한사항

📌 내가 생각한 풀이

구현문제다. 시작시간과 종료시간+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()로 바꾸어서 푸는것이 편리한 것 같다.

profile
사람들의 더 나은 삶을 위한 개발자

0개의 댓글