본문 바로가기
알고리즘/구현

[프로그래머스][js] 주차 요금 계산

by 성현0409 2024. 7. 6.

문제 분석

  • 자동차들이 주차장에 들락날락하고 있다.
  • 각 차량마다 누적 주차 시간을 구해서 기본요금과 단위요금을 계산한다.

문제 풀이

function solution(fees, records) {
    var answer = [];
    var cars = {};
    const timeTom = (time) => {
        let [a, b] = time.split(":").map(Number);
        return a * 60 + b;
    }
    for (let i = 0; i < records.length; i++) {
        let[time, number, io] = records[i].split(" ");
        time = timeTom(time);
        if (cars[number]) {
            cars[number].push(time);
        }
        else {
            cars[number] = [time];
        }
    }
    for (let c of Object.keys(cars)){
        let temp = 0;
        let ans = fees[1];
        if (cars[c].length % 2 !== 0){
            cars[c].push(timeTom("23:59"))
        }
        for (let i = 0; i < cars[c].length; i += 2) {
            temp += cars[c][i+1] - cars[c][i];
        }
        let extime = temp - fees[0];
        if (extime > 0) {
            ans += Math.ceil(extime/fees[2]) * fees[3];
        }
        cars[c].push(ans);
    }

    c = Object.keys(cars).sort((a, b) => (a - b));
    c.forEach((a) => answer.push(cars[a][cars[a].length-1]));
    return answer;
}

 

  • 각 시간들을 ":"로 파싱해서 모두 분으로 치환한다.
  • 자동차 번호마다 객체로 들어오는시간 나가는 시간을 데이터로 저장한다.
  • 만약 출입시간이 홀수라면 23:59의 시간을 추가해준다.
  • 들어오는 시간 나가는시간 2개씩 묶어서 시간을 계산하여 더해주고
  • 기본시간보다 이상 주차했다면 그만큼 단위시간의 요금을 더해준다.
  • 자동차번호를 오름차순으로 정렬해주고 출력한다.

'알고리즘 > 구현' 카테고리의 다른 글

[백준][js] 20436_ZOAC 3  (0) 2024.06.23
[백준][python] 1021 회전하는 큐  (0) 2022.03.10
[백준][python] 1745 방 번호  (0) 2022.02.19
[백준][python] 1316 그룹 단어 체커  (0) 2022.02.19
[백준][python] 4673 셀프 넘버  (0) 2022.02.17