728x90
programmers.co.kr/learn/courses/30/lessons/17676
주어진 문자열 lines 가 하나라면, 겹치는 요청이 없으므로 1초에 해당 line 만 처리하면 되므로 바로 1을 리턴하였다.
2개 이상일 경우에, 겹치는 구간을 구하려고 했다. (요청의 최대 개수)
먼저, 각 배열요소에서 split() 을 이용해서 ss 초 단위를 구하고, 처리시간을 이용해서 로그의 처리시간 시작시간과 끝시간을 구했다. 초 단위로 이루어지기 때문에 (int) 정수로 변환해서 겹치는 경우에 map에 저장해서 가장 큰 값을 리턴했는데, 시작부분 끝부분 계산이 잘못됐는지 일부 테스트 케이스만 성공하고 일부는 실패했다. 좀 더 면밀히 보고 보완해야겠다.
풀이 - 미완
import java.util.*;
public class Traffic0407 {
public int solution(String[] lines) {
if(lines.length == 1){
return 1;
}
Map<Integer,Integer> map = new HashMap<>();
for (String time : lines) {
// ss 얻기
String [] each = time.split(" ");
String [] ss = each[1].split(":");
// 시작범위, 끝범위 계산하기
int index = each[2].indexOf("s");
float start = Float.parseFloat(each[2].substring(0, index)); // 2.0
float end = Float.parseFloat(ss[2]); // 4.001
start = Math.round((end * 1000) - (start * 1000) - 1)/1000.0f; // 2.003
// 정수 값 넣기
for (int i = (int)start; i <= (int)end; i++) {
map.put(i, map.getOrDefault(i, 0) + 1);
}
}
// 최대값 뽑기
int max = 0;
for(int key : map.keySet()){
max = Math.max(max, map.get(key));
}
return max;
}
}
728x90
'코딩테스트' 카테고리의 다른 글
[LeetCode] 206. Reverse Linked List (0) | 2021.04.09 |
---|---|
[LeetCode] 70. Climbing Stairs (0) | 2021.04.08 |
[Programmers] 타겟 넘버 (0) | 2021.04.06 |
[LeetCode] 1290. Convert Binary Number in a Linked List to Integer (0) | 2021.04.06 |
[Programmers] 더 맵게 - 힙(Heap) JAVA (2) | 2021.04.02 |