프로그래머스 Lv3 추석 트래픽 Java

Android Chen·2021년 10월 29일
0

문제설명

https://programmers.co.kr/learn/courses/30/lessons/17676

구현방법

  • 시간처리를 전부 밀리 세컨드 단위로 바꿈. 1시간은 360만, 1분은 6만임
  • 문자열마다 처리가 끝나는 시간 기준 1초, 즉 1000 단위로 탐색, 최댓값을 찾아 return

코드

import java.util.*;
class Solution {
    public int solution(String[] lines) {
        long[][] input = new long[lines.length][2];
        for(int i=0;i<lines.length;i++){
        String start = lines[i].split(" ")[1];
        String minus = lines[i].split(" ")[2];
        minus = minus.replaceAll("[.s]","");
        if(minus.length()==1){
            minus +="000";
        }
        else if(minus.length()==2){
            minus +="00";
        }
        else if(minus.length()==3){
            minus +="0";
        }
        String[] str = start.split(":");
        long h = Long.parseLong(str[0])*3600000;
        long m = Long.parseLong(str[1])*60000;
        long s = Long.parseLong(str[2].replace(".",""));
        input[i][0] = h+m+s - Long.parseLong(minus)+1;
        input[i][1] = h+m+s;
        }
      
        int max = Integer.MIN_VALUE;
        int cnt=0;
        int t=0;
        long start = input[0][1];
        while(true){
            long end = start+1000;
            for(int i=0;i<input.length;i++){
                if(input[i][0]<end&&input[i][1]>=start){
                    cnt++;
                }
            }
          
            max = Math.max(cnt,max);
            cnt=0;
            if(t==lines.length-1){
                break;
            }
            start=input[++t][1]; 
        }
        
        return max;
    }
}
profile
https://github.com/Userz1-redd

0개의 댓글