지식의모듈화

[구현][JS] 주차요금계산 본문

PS/프로그래머스

[구현][JS] 주차요금계산

returnzero 2022. 7. 28. 16:48
function solution(fees, records) {
    function intervalTime(start,end){
        let [hour,min]=start.split(':').map(e=>Number(e));
        let [hourE,minE]=end.split(':').map(e=>Number(e));
        return hourE*60+minE-(hour*60+min);
    }
    
    records=records.map(e=>e.split(' '))
    let parked={};
    let Time={};
    let cumTime={};
    for(let i=0; i<records.length; i++){
        if(records[i][2]==='IN') {
            Time[records[i][1]]=records[i][0]
            parked[records[i][1]]=1;
        }
        else if(records[i][2]==='OUT'){
            parked[records[i][1]]=0;
            let start= Time[records[i][1]];
            let end = records[i][0];
            cumTime[records[i][1]]= (cumTime[records[i][1]]||0)+intervalTime(start,end)
        }
    }
    for(let key in parked){
        if(parked[key]){
            let start = Time[key];
            cumTime[key]=(cumTime[key]||0)+intervalTime(start,'23:59')
        }
    }
    
    let sortedkeys=Object.keys(cumTime).sort()
    // console.log(arr);
    var answer = [];

    for(let i=0; i<sortedkeys.length;i++){
        if(cumTime[sortedkeys[i]]<=fees[0]) answer.push(fees[1]);
        else{
        answer.push(fees[1]+Math.ceil((cumTime[sortedkeys[i]] -fees[0])/fees[2])*fees[3])
        }   
    }
    return answer;
}

그닥 어렵지 않다.. 

날짜가 주어지면 단위를 변환하도록 하자.