[JavaScript] 프로그래머스 - 주차 요금 계산 (2단계)

배똥회장·2022년 9월 16일
0

📝 문제

프로그래머스 - 주차 요금 계산 (2단계)


📝 풀이

📌 작성 코드

function solution(fees, records) {
    var answer = new Array();    
    var cars = new Object();
    
    for (var i = 0; i < records.length; i++) {
        var record = records[i].split(" ");
        var name = record[1];
        if (cars[name] === undefined) cars[name] = new Car();
        if (record[2] == 'IN') {
            cars[name].setIn(record[0]);
        } else {
            cars[name].setOut(record[0]);
        }
    }
    
    var keys = Object.keys(cars).sort();
    for (var i = 0; i < keys.length; i++) {
        var value = cars[keys[i]];
        
        if (value.out === '' || value.in > value.out) {
            value.setOut('23:59');
        }
        
        var time = value.use;
        
        var money = fees[1];
        if (time > fees[0]) {
            money += parseInt((time - fees[0]) / fees[2]) * fees[3];
            if ((time - fees[0]) % fees[2] != 0) money += fees[3];
        }
        
        answer.push(money);
    }
    return answer;
}

class Car {
    constructor () {
        this.in = "";
        this.out = "";
        this.use = 0;
    }
    
    setIn = (time) => {
        this.in = time;    
    }
    
    setOut = (time) => {
        this.out = time;
        
        var itime = this.in.split(":");
        var otime = this.out.split(":");
        
        this.use += (parseInt(otime[0]) * 60 + parseInt(otime[1])) - (parseInt(itime[0]) * 60 + parseInt(itime[1]));
    }
}

📌 결과


📌 공부 내용

1. new Array()? new Object()?

어찌된 영문인지 cars를 new Array()로 선언한 후 차 번호를 넣으면 문자열임에도 불구하고 숫자로 인식을 해서 배열이 만들어짐...

그래서 일단 여기서는 Object로 선언하여 작성했는데 잘 한건진 모르겠음

2. Object.keys(obj)

obj의 키 값을 가져오는 함수

profile
어쩌면 개발자

0개의 댓글