[코테] 호텔 대실

Dongmin Lee·2023년 10월 5일
0

코테

목록 보기
20/23

문제

풀이

function solution(book_time) {
    const rooms = [];
    
    // Number로 치환하기
    const newTime = book_time.map(([s,e])=>{
        const [sh,sm] = s.split(':').map(str=>Number(str));
        const [eh,em] = e.split(':').map(str=>Number(str));

        return [sh * 60 + sm , eh * 60 + em + 10];
    })

    // 오름차순 정렬
    newTime.sort((a,b)=>a[0] - b[0]);
    
    // rooms의 요소는 대실 종료시간만 넣을 거
    // rooms의 최소값과 현재 시작시간을 비교해서 최소값이 더 크면 빈 시간이 없는 거니까 방 하나 추가
    // 최소값이 작거나 같으면 그 뒤에 집어넣으면 되니까 종료시간 갈아끼기
    newTime.forEach(([st,et])=>{
        if(Math.min(...rooms) > st){
            rooms.push(et);
        }
        else{
            const minIdx = rooms.indexOf(Math.min(...rooms));
            rooms.splice(minIdx,1,et);
        }
    })

    return rooms.length;
}

러닝 포인트

  • Math.min()의 인자가 비어있을 경우 리턴값은 Infinity
  • 문제가 이중 배열이라고 문제도 이중 배열로 풀 필요는 없음. 최대한 간단한 방법을 생각해내기.
  • 구조분해할당 잘 써먹기.
  • 오름차순 정렬 활용 잘하삼.
profile
어제보다 성장하기

0개의 댓글