주차 요금 계산

심규원·2024년 8월 30일

https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=java

import java.util.*;
import static java.lang.Math.*;
class Solution {
    static int convertTime(String time){
        String[] tempTime = time.split(":");

        int outTime = Integer.parseInt(tempTime[0]) * 60;
        outTime += Integer.parseInt(tempTime[1]);

        return outTime;
    }
    
    public int[] solution(int[] fees, String[] records) {

        //차량번호,    시간
        Map<String, Integer> In = new HashMap<>();
        Map<String, Integer> answer = new HashMap<>();

        for(int i = 0; i < records.length; i++){
            String[] tempStr = records[i].split(" ");

            int tempTime = 0;
            int money = 0;
            if(tempStr[2].equals("IN")){
                In.put(tempStr[1], convertTime(tempStr[0]));
            }else{
                tempTime = convertTime(tempStr[0]) - In.get(tempStr[1]);
                In.remove(tempStr[1]);
                if(answer.containsKey(tempStr[1])){
                    answer.replace(tempStr[1], answer.get(tempStr[1]) + tempTime);
                }else answer.put(tempStr[1], tempTime);
            }
        }

        for(String key : In.keySet()){
            int tempTime = 0;
            tempTime = convertTime("23:59") - In.get(key);
            if(answer.containsKey(key)){
                answer.replace(key, answer.get(key) + tempTime);
            }else {
                answer.put(key, tempTime);
            }
        }

        List<String> keySet = new ArrayList<>(answer.keySet());
        Collections.sort(keySet);
        int[] answerArray = new int[keySet.size()];

        for (int i = 0; i < keySet.size(); i++) {
            answerArray[i] = fees[1];
             if(answer.get(keySet.get(i)) > fees[0]){
                 int tempTime = (answer.get(keySet.get(i)) - fees[0]);
                 answerArray[i] += (int) ceil(((double) tempTime / fees[2])) * fees[3];
             }
        }
        
        return answerArray;
    }
}

시키는데로 구현하면 되는 단순 구현문제. 그냥 적당히 String 자르고 수 계산해서 최종적으로 계산식에 근거하여 결과를 내놓으면 된다.

속도도 낫배드

0개의 댓글