프로그래머스 [주차 요금 계산] - js
10029 단어 JavaScript알고리즘JavaScript
주차요금계산
https://programmers.co.kr/learn/courses/30/lessons/92341
- 단순 구현 + 파싱 문제
정답 코드
const solution = (fees, records) => {
let answer = [];
const isParking = {}; // 주차된 시간을 저장하는 Object
const countingTimes = {}; // 총 주차시간을 저장하는 Object
const MaxTime = 23*60 + 59; // 가장 늦은 시간을 분으로 포맷
const [standardTime, standardFee, unitTime, unitFee] = fees;
// 1. 파싱 및 주차시간 저장 & 총 주차시간 저장
records.forEach(el => {
const [time, carNumber, parking] = el.split(' ');
const [hour, minute] = time.split(':');
const totalTime = hour*60 + minute*1;
if (parking === 'IN') {
// 입차가 되었다면 지금 시간 저장.
isParking[carNumber] = totalTime;
// 첫 입차라면 초기화
if (!countingTimes[carNumber]) {
countingTimes[carNumber] = 0;
}
} else {
// 현재 출차 분과 저장되었던 입차 분의 차이를 총 주차시간에 저장.
countingTimes[carNumber] += totalTime - isParking[carNumber];
// 출차가 되었으면 -1로 저장.
isParking[carNumber] = -1;
}
})
// 2. 마지막까지 주차된 차량 파악
for (const carNumber in isParking) {
const prevParking = isParking[carNumber];
if (prevParking !== -1) {
countingTimes[carNumber] += MaxTime - prevParking;
};
}
// 3. 차량번호를 정렬한 배열 생성
const sortedCarNumberList = Object.keys(countingTimes).sort()
// 4. 총 주차시간을 계산하여 요금 저장
for (const carNumber of sortedCarNumberList) {
const parkingTime = countingTimes[carNumber];
// 만약 주차시간이 기준시간보다 작거나 같다면, 기준 요금만 지불
if (parkingTime <= standardTime) {
answer.push(standardFee);
}
// 만약 주차시간이 기준시간보다 크다면, 단위 시간에 요금까지 계산
else {
answer.push(Math.ceil((parkingTime - standardTime)/unitTime) * unitFee + standardFee);
}
}
return answer;
}
Author And Source
이 문제에 관하여(프로그래머스 [주차 요금 계산] - js), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@developyoun/프로그래머스-주차-요금-계산-js저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)