Skip to content

Latest commit

 

History

History
63 lines (50 loc) · 2.31 KB

File metadata and controls

63 lines (50 loc) · 2.31 KB

프로그래머스 Level2 : 2022 KAKAO BLIND RECRUITMENT 주차 요금 계산

import java.util.HashMap;
import java.util.Map;
import java.util.Arrays;

class Solution {
    public int[] solution(int[] fees, String[] records) {
        HashMap<String,String> carMap = new HashMap<>();
        HashMap<String,Integer> feeMap = new HashMap<>();
        
        for(String r : records){
            String[] info = r.split(" ");
            String time = info[0];
            String carNumber = info[1];
            String inOut = info[2];
            
            if(!carMap.containsKey(carNumber) && inOut.equals("IN")){   
                carMap.put(carNumber,time);
            } else if(carMap.containsKey(carNumber) && inOut.equals("OUT")){
                String[] inTime = carMap.get(carNumber).split(":");
                String[] outTime = time.split(":");
                carMap.remove(carNumber);
                
                int pTime = (Integer.parseInt(outTime[0])-Integer.parseInt(inTime[0]))*60 + Integer.parseInt(outTime[1])-Integer.parseInt(inTime[1]);
                
                int t = feeMap.containsKey(carNumber)?feeMap.get(carNumber) : 0;
                feeMap.put(carNumber,pTime+t);
            }
        }
        
        for(Map.Entry<String, String> entry : carMap.entrySet()){
            String[] inTime = entry.getValue().split(":");
            int pTime = (23-Integer.parseInt(inTime[0]))*60 + 59-Integer.parseInt(inTime[1]);
            
            int t = feeMap.containsKey(entry.getKey())?feeMap.get(entry.getKey()) : 0;
            feeMap.put(entry.getKey(),pTime+t);
        }
        
        
        for(Map.Entry<String, Integer> entry : feeMap.entrySet()){
            if(entry.getValue()<=fees[0]) {
                feeMap.put(entry.getKey(),fees[1]);
            }else{
                int fee = fees[1] + (int)Math.ceil((double)(entry.getValue()-fees[0])/fees[2]) * fees[3];
                feeMap.put(entry.getKey(),fee);
            }
        }
        
        Object[] key = feeMap.keySet().toArray();
        Arrays.sort(key);
        int[] answer = new int[key.length];
        for(int i=0; i<key.length; i++){
            answer[i] = feeMap.get((String)key[i]);
        }
        
        return answer;
    }
}