문제
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 정렬을 위해서는 배열로 바꾸어야 한다.
'programmers' 카테고리의 다른 글
programmers Level 1 신규 아이디 추천 (0) | 2022.04.29 |
---|---|
programmers Level 2 양궁대회 (0) | 2022.04.26 |
programmers Level 2 k진수에서 소수 개수 구하기 (0) | 2022.04.24 |
programmers Level 2 순위 검색 (0) | 2021.09.18 |
programmers Level 3 모두 0으로 만들기 (0) | 2021.04.16 |
댓글