-
[프로그래머스] 추석 트래픽 (2018 KAKAO BLIND RECRUITMENT)ALGORITHM/PROGRAMMERS 2020. 12. 13. 21:05
programmers.co.kr/learn/courses/30/lessons/17676
2020-12-13
12345678910111213141516171819202122232425262728293031323334353637383940import java.util.Arrays;public class Solution17676 {public static void main(String[] args) {String[] lines = {"2016-09-15 00:00:00.000 2.3s", "2016-09-15 23:59:59.999 0.1s"}; //test용int answer = 0;String str[] = new String[3];double store[][] = new double[lines.length][2]; //store start, enddouble start = 0; //minStartfor(int i = 0; i < lines.length; i++) {str = lines[i].split(" "); // split firstdouble time = 0;String t1 = str[1]; // calc timeString cal[] = t1.split(":");time += (3600*Double.parseDouble((cal[0])) + 60*Double.parseDouble((cal[1])) + Double.parseDouble(cal[2]));String g1 = str[2].replace("s", ""); //gapdouble gap = Double.parseDouble(g1);store[i][0] = Double.parseDouble(String.format("%.3f", (time-gap+0.001)));store[i][1] = Double.parseDouble(String.format("%.3f", (time)));}double next = 0;for(int i = 0; i < lines.length; i++) {int count = 0;start = store[i][1];next = Double.parseDouble(String.format("%.3f", (start + 0.999))); //0.999->1for(int j = 0; j < lines.length; j++) {if(store[j][1] >= start && next >= store[j][0]) // start보다는 크거나 같고 next보다도 작거나같게count++;}if(answer < count) answer = count;}System.out.println("answer " + answer);}}cs #문제풀이
1. hh:mm:ss.sss를 초 단위로 계산을 하였다. 3600*hh + 60*mm + ss.sss 로 환산하고 소수점 셋째짜리까지만 사용하도록 하였다.
2. store라는 2차원 배열을 만들고 [i][0]번째에는 처리 시작시간을 [i][1]번째에는 처리 끝 시간을 각각 저장하였다.
3. 처음에는 0.001, 0.01 단위로 모두 쪼개서 계산을 해보았는데 역시나 시간 초과가 났었다. 이 부분에서 고민을 많이했었는데, 약간 끼워맞추듯이(시간초과때문에 이것저것 해보다가) 끝 시간 기준으로 해봤는데 되었었다. 생각해보면 결국 로그의 처리량이 바뀌는 포인트가 끝 시간이기 때문에 기준점을 끝 시간으로 잡야아 하는 것 같다.
그래서 각 로그의 끝 시간 지점을 start로 잡고, next는 끝 시간 + 0.999를 해주었다. 1이 아닌 이유는 범위를 체크할 때 시작시간, 끝시간이 모두 크거나(작거나) 같을 때를 기준으로 count하기 때문이다.
마지막으로 start(처리량의 끝)보다 끝 시간이 크거나 같으면서 next(start+0.999)보다는 시작시간이 작거나 같은 경우를 count 해주었다.
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[프로그래머스] 비밀지도 (2018 KAKAO BLIND RECRUITMENT) (0) 2020.12.28 [프로그래머스] 셔틀버스 (2018 KAKAO BLIND RECRUITMENT) (0) 2020.12.18 [프로그래머스] 정수 제곱근 판별 (0) 2020.12.13 [프로그래머스] 이상한 문자 만들기 (연습문제) (0) 2020.12.13 [프로그래머스] 줄 서는 방법 (연습문제) (0) 2020.12.12