-
[프로그래머스] 주차 요금 계산 (2022 KAKAO BLIND RECRUITMENT)ALGORITHM/PROGRAMMERS 2022. 6. 2. 21:36
https://programmers.co.kr/learn/courses/30/lessons/92341
2022-06-02
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253import java.util.Arrays;import java.util.HashMap;import java.util.TreeMap;public class Solution92341 {public static int cal(String time) {String[] tmp = time.split(":");return Integer.parseInt(tmp[0])*60+Integer.parseInt(tmp[1]);}public static int[] solution(int[] fees, String[] records) {HashMap<String, Integer> inAndOut = new HashMap<>();TreeMap<String, Integer> accum = new TreeMap<>();for(int i = 0; i < records.length; i++) {String[] tmp = records[i].split(" ");int time = cal(tmp[0]);String carNum = tmp[1];if(tmp[2].equals("IN")) {inAndOut.put(carNum, time);} else {int accumTime = time - inAndOut.get(carNum);inAndOut.remove(carNum);accum.put(carNum, accum.getOrDefault(carNum, 0) + accumTime);}}if(!inAndOut.isEmpty()) {int time = cal("23:59");for(String carNum : inAndOut.keySet()) {int accumTime = time - inAndOut.get(carNum);accum.put(carNum, accum.getOrDefault(carNum, 0) + accumTime);}}int[] answer = new int[accum.size()];int idx = 0;for(String key: accum.keySet()) {int time = Math.max((accum.get(key) - fees[0]), 0);answer[idx] = fees[1] + (int)Math.ceil(time/(double)fees[2])*fees[3];idx++;}return answer;}public static void main(String[] args) {int[] f = {180, 5000, 10, 600};String[] r = {"05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"};System.out.println(Arrays.toString(solution(f, r)));}}cs #문제풀이
1. records 돌면서 in 일 때는 그냥 단순히 map에 in을 했던 시간을 저장하고 out일 때는 그 구간의 시간을 계산해서 누적으로 treemap에 저장
2. 만약 아직 map에 in만 하고 out을 안 한 차량이 남아있다면, 빼주면서 23:59분 기준으로 계산
3. 누적된 시간 계산
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[프로그래머스] K진수에서 소수 개수 구하기 (2022 KAKAO BLIND RECRUITMENT) (0) 2022.09.18 [프로그래머스] 성격 유형 검사하기 (2022 KAKAO TECH INTERNSHIP) (0) 2022.09.14 [프로그래머스] 신고 결과 받기 (2022 KAKAO BLIND RECRUITMENT) (0) 2022.05.28 [프로그래머스] 3진법 뒤집기 (월간 코드 챌린지 시즌1) (0) 2021.12.06 [프로그래머스] 체육복 (0) 2021.12.06