map을 사용해서 '번호판=시간'을 저장
-> 입차 / 출차시간을 저장하되, 시간을 분으로 변환해서 저장
입차면 저장, 출차면 번호판의 시간을 가져와서 주차된 시간을 계산해서 다시 저장
저장된 데이터로 주차 요금 계산
import java.util.*;
class Solution {
public int[] solution(int[] fees, String[] records) {
List<Integer> result = new ArrayList<>();
Map<String, Integer> map = new HashMap<>();
Map<String, Integer> costs = new HashMap<>();
for (String recode : records) {
String[] part = recode.split(" ");
int hour = Integer.parseInt(part[0].substring(0, 2));
int minute = Integer.parseInt(part[0].substring(3, 5));
int time = hour * 60 + minute;
String key = part[1];
if (part[2].equals("IN")) {
map.put(key, time);
} else {
int newTime = time - map.get(key);
costs.put(part[1], costs.getOrDefault(key, 0) + newTime);
map.remove(part[1]);
}
}
if (!map.isEmpty()) {
for (String key : map.keySet()) {
int time = 23 * 60 + 59;
int newTime = time - map.get(key);
costs.put(String.valueOf(key), costs.getOrDefault(key, 0) + newTime);
}
}
List<String> keySet = new ArrayList<>(costs.keySet());
System.out.println(costs);
Collections.sort(keySet);
for (String key : keySet) {
int time = costs.get(key);
int cost = fees[1];
if (time > fees[0]){
cost += ((time - fees[0]) / fees[2]) * fees[3] + (((time - fees[0]) % fees[2]) == 0 ? 0 : fees[3]);
}
result.add(cost);
}
return result.stream().mapToInt(n -> n).toArray();
}
}