Skip to content

Latest commit

 

History

History
124 lines (97 loc) · 3.82 KB

File metadata and controls

124 lines (97 loc) · 3.82 KB

프로그래머스 Level3 : 2018 KAKAO BLIND RECRUITMENT [1차] 추석 트래픽

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Collections;

class Solution {
    public int solution(String[] lines) {
        int answer = 0;
        ArrayList<long[]> timeLine = new ArrayList<>();
        
        for(String l : lines){
            String[] arr = l.split(" ");
            String[] time = arr[1].split(":");
            long hour = Long.parseLong(time[0])*1000;
            long minute = Long.parseLong(time[1])*1000;
            long second = (long)(Double.parseDouble(time[2])*1000);
            
            long eTime = hour*3600 + minute*60 + second;
            long sTime = eTime-(long)(Double.parseDouble(arr[2].replace("s",""))*1000)+1;
            
            long[] tl = {sTime,eTime};
            timeLine.add(tl);
        }
        
        
        Collections.sort(timeLine, new Comparator<long[]>(){
            @Override
            public int compare(long[] t1, long[] t2){
                return t1[0]>t2[0]?1:-1;
            }
        });
             
        
        
        for(int i=0; i<timeLine.size(); i++){
            int cnt = 0;
            long cTime = timeLine.get(i)[1];
            long cTimeTo1Sec = cTime+999;

            for(int j=0; j<timeLine.size(); j++){
                long sTime = timeLine.get(j)[0];
                long eTime = timeLine.get(j)[1];

                if(cTime<=sTime && cTimeTo1Sec>=sTime){
                    cnt++;   
                } else if(cTime<=eTime && cTimeTo1Sec>=eTime){
                    cnt++; 
                } else if(sTime<=cTime && eTime>=cTimeTo1Sec){
                    cnt++; 
                }else if(cTimeTo1Sec<sTime){
                    break;
                }
            }
            answer = Math.max(answer,cnt);
        }
        
        
        return answer;
    }
}

LocalDateTime

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Collections;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

class Solution {
    public int solution(String[] lines) {
        int answer = 0;
        ArrayList<LocalDateTime[]> timeLine = new ArrayList<>();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-ddHH:mm:ss.SSS");
        
        for(String l : lines){
            String[] arr = l.split(" ");
            
            LocalDateTime eTime = LocalDateTime.parse(arr[0]+arr[1], formatter);
            LocalDateTime sTime = eTime.minusNanos((long)(Double.parseDouble(arr[2].replace("s",""))*1000000000)-1000000);
            sTime = sTime.withNano((int)(sTime.getNano()/1000000)*1000000);
            LocalDateTime[] tl = {sTime,eTime};
            timeLine.add(tl);
            
        }
        
        Collections.sort(timeLine, new Comparator<LocalDateTime[]>(){
            @Override
            public int compare(LocalDateTime[] t1, LocalDateTime[] t2){
                return t1[0].isBefore(t2[0])? -1 : 1;
            }
        });
                
        for(int i=0; i<timeLine.size(); i++){
            int cnt = 0;
            LocalDateTime cTime = timeLine.get(i)[1];
            LocalDateTime cTimeTo1Sec = cTime.plusNanos(999000000);
            
            for(int j=0; j<timeLine.size(); j++){
                LocalDateTime sTime = timeLine.get(j)[0];
                LocalDateTime eTime = timeLine.get(j)[1];
                
                if(cTimeTo1Sec.isBefore(sTime)){
                    break;
                } else if(eTime.isBefore(cTime)){
                    continue;
                }
                cnt++;
                
            }
            answer = Math.max(answer,cnt);
        }
        
        
        return answer;
    }
}