문제

https://programmers.co.kr/learn/courses/30/lessons/92341

걸린 시간

-

풀이

JavaScript

function solution(fees, records) {
    var answer = [];
    // 누적 시간 계산
    const parking = {};
    const car = {};
    for(let r of records){
        let [time, num, io] = r.split(' ');
        let [h, m] = time.split(':').map(Number);
        m += h*60;
        if(io === 'IN'){
            parking[num] = m;
            if(!car.hasOwnProperty(num)) car[num] = 0;
        }
        else{
            let car_in = parking[num];
            let car_out = m;
            delete parking[num];
            car[num] += car_out-car_in;
        }
    }
    // 남은 차량 처리
    let car_out = 59 + 23*60;
    for(let num in parking){
        let car_in = parking[num];
        car[num] += car_out-car_in;
        delete parking[num];
    }
    // 요금 계산
    const basic_time = fees[0];
    const basic_fee = fees[1];
    const unit_time = fees[2];
    const unit_fee = fees[3];
    const arr = [];
    for(let num in car){
        let time = car[num];
        let fee = basic_fee;
        if(time > basic_time){
            fee += Math.ceil((time-basic_time)/unit_time)*unit_fee;
        }
        arr.push([parseInt(num), fee]);
    }
    // 정렬 후 출력
    arr.sort((a, b) => {
        return a[0] - b[0];
    })
    for(let i of arr){
        answer.push(i[1]);
    }
    return answer;
}
  • Object 는 for in 구문으로 접근할 수 있다. key 값이 하나씩 들어온다.
  • Object 정렬을 위해서는 배열로 바꾸어야 한다.

댓글