Muscardinus
주차 요금 계산 본문
728x90
https://programmers.co.kr/learn/courses/30/lessons/92341
코딩테스트 연습 - 주차 요금 계산
[180, 5000, 10, 600] ["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"] [14600, 34400, 5000]
programmers.co.kr
function solution(fees, records) {
const answer = [];
const carsInfo = {};
for (let record of records) {
const [time, carNum, _] = record.split(" ");
carsInfo[carNum] = carsInfo[carNum] || [];
carsInfo[carNum].push(time);
}
const cars = Object.keys(carsInfo).sort((a, b) => a - b);
// 기본 시간, 기본 요금, 단위 시간, 단위 요금
const [dT, dF, uT, uF] = fees;
const calcInOutTime = (inTime, outTime = "23:59") => {
const start = inTime.split(":");
const end = outTime.split(":");
const startDate = new Date(0, 0, 0, start[0], start[1], 0);
const endDate = new Date(0, 0, 0, end[0], end[1], 0);
const diff = endDate - startDate;
const minutes = Math.floor(diff / 1000 / 60);
return minutes;
}
for (let car of cars) {
let totalTime = 0;
const n = carsInfo[car].length;
for (let i = 0; i < n; i += 2) {
totalTime += calcInOutTime(carsInfo[car][i], carsInfo[car][i + 1]);
}
let fee = dF;
if (totalTime > dT) {
fee += (Math.ceil((totalTime - dT) / uT) * uF);
}
answer.push(fee);
}
return answer;
}
728x90
Comments