알고리즘
[JavaScript] 프로그래머스 - 주차 요금 계산
J3SUNG
2023. 2. 28. 01:10
728x90
2022 KAKAO BLIND RECRUITMENT
자동차가 주차된 시간과 나간 시간이 주어질 때 각 차량별 비용을 출력하는 문제입니다.
만약 나가는 시간이 주어지지 않는 경우 23:59에 나간 것으로 처리합니다.
차량 번호판은 최대 0000~9999까지 있으므로 10000크기의 배열들을 생성해주었습니다.
차량이 주차된 경우 해당 번호판으로 배열에 시간을 등록하고
나간 경우 들어온 시간과 나간 시간을 계산하여 머문 시간을 넣어주었습니다.
위의 과정을 모두 처리한 후 각 차량 별 머문 시간으로 주차요금을 계산해서 결과값을 찾았습니다.
function solution(fees, records) {
let inCar = [];
let outCar = [];
let answer = [];
for(let i=0; i<records.length; ++i){
let arr = records[i].split(" ");
let time = arr[0].split(":");
let number = parseInt(arr[1]);
let dir = arr[2];
time = parseInt(time[0] * 60) + parseInt(time[1]);
if(dir === "IN") {
inCar[number] = time;
} else if(dir === "OUT") {
let calcTime = time - inCar[number];
inCar[number] = -1;
outCar[number] >= 0 ? outCar[number] += calcTime : outCar[number] = calcTime;
}
}
for(let i=0; i<10000; ++i){
if(inCar[i] >= 0){
let calcTime = 1439 - inCar[i];
outCar[i] >= 0 ? outCar[i] += calcTime : outCar[i] = calcTime;
}
if(outCar[i] >= 0){
let fee = fees[1];
if(outCar[i] - fees[0] > 0){
fee += parseInt((outCar[i] - fees[0] + fees[2] - 1) / fees[2]) * fees[3];
}
answer.push(fee);
}
}
return answer;
}