Tiny Bunny
본문 바로가기

programmers

프로그래머스 3단계 : 1차 셔틀버스 (Java 자바)

728x90

 

import java.util.*;
class Solution {
    public String solution(int n, int t, int m, String[] timetable) {
        String answer = "";
        ArrayList<Integer> list = new ArrayList<>();
        for(int i=0; i<timetable.length; i++){
            list.add(str2time(timetable[i]));
        }
        Collections.sort(list); // 오름차순 정렬
        
        int busStartTime = 540; // 9*60=540, 첫 버스 출발 시간
        int lastTime = 0;   // 마지막으로 탄 사람 시간
        int idx = 0;
        int cnt = 0;
        
        for(int i=0; i<n; i++){
            cnt = 0;
            if(idx >= list.size()) break;
            while(cnt < m){
                if(busStartTime >= list.get(idx)){
                    lastTime = list.get(idx);   // 마지막으로 탄 사람 갱신
                    idx++;
                    cnt++;
                    if(idx >= list.size()) break;
                }else{
                    break;
                }
            }
            busStartTime += t;   
        }
        
        if(cnt < m){    // 마지막 버스에 자리가 있음
           answer = time2str(busStartTime-t);
        }else { // 마지막 버스에 자리가 없음 -> 마지막으로 탄사람보다 1분 먼저 와야 함
            answer = time2str(lastTime-1);
        }
        
        return answer;
    }
    
    /* String -> time */
    public static int str2time(String str){
        String[] tmp = str.split(":");
        int hour = Integer.parseInt(tmp[0]) * 60;
        int min = Integer.parseInt(tmp[1]);
        return hour+min;
    }
    
    /* time -> String */
    public static String time2str(int time){
        String ret = "";
        String hour = String.valueOf(time/60);
        String min = String.valueOf(time%60);
        if(hour.length()<2){
            ret += "0";
        }
        ret += hour+":";
        if(min.length()<2){
            ret += "0";
        }
        ret += min;
        
        return ret;
    }
}
728x90