다른 사람의 풀이
import java.util.*;
class Solution {
public int convert(String time){
String[] split = time.split(":");
return Integer.parseInt(split[0])*60 +Integer.parseInt(split[1]);
}
HashMap<String, Integer> intime = new HashMap<>();
TreeMap<String, Integer> result = new TreeMap<>();
public int[] solution(int[] fees, String[] records) {
for(int i=0; i<records.length; i++) {
String[] str1 = records[i].split(" ");
//str1[0]: 입고출고시간
//str1[1]: 해당 차량번호
//str1[2]: IN or OUT
//입고인경우
if (str1[2].equals("IN")) {
//입고시간
//key: 해당차량 value: 해당차량의 입고시간
intime.put(str1[1], convert(str1[0]));
//result Map이 해당 차량(key)를 가지고 있지 않은 경우 해당차량의 최초 누적시간을 0으로 초기화
if (!result.containsKey((str1[1]))) {
result.put(str1[1], 0);
}
//출고인 경우
} else {
//result.get(str[1]) 값을 value 값으로 넣어준다.
// 해당차량에 대하여, "해당 차량의 초기값 + 해당 차량의 출고시간 - 해당차량의 입고시간
result.put(str1[1], result.get(str1[1]) + convert(str1[0]) - intime.get(str1[1]));
intime.remove(str1[1]);
}
}
intime.forEach((key, val)->{
result.put(key, result.get(key)+23*60+59 - val );
});
//fees[0] : 기본시간
//fees[1] : 기본요금
//fees[2] : 단위시간
//fees[3] : 단위요금
int[] answer = new int[result.size()];
int idx =0;
for(int val : result.values()){
answer[idx]= fees[1];
if(val>fees[0]){
answer[idx]+=Math.ceil((val- fees[0])/(double)fees[2])*fees[3];
}
++idx;
}
return answer;
}
}
▶ split() 으로 쪼개서 접근하는 것이 생명이다.
'프로그래머스(자바) > LV.2(자바)' 카테고리의 다른 글
H-index → "자바" (0) | 2023.01.03 |
---|---|
더 맵게→ Priority Queue★★+poll()+peek() (0) | 2023.01.02 |
귤 고르기 → getOrDefault()★★ + 요소 개수 세기 + 내림차순★ (0) | 2023.01.02 |
k진수에서 소수 개수 구하기→10진수를 n진법의 문자열+StringBuilder()+소수판별(제곱근, long타입) (0) | 2023.01.02 |
전화번호 목록→ String문자열의 정렬 sort()의 개념★★ (0) | 2023.01.02 |