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
'programmers' 카테고리의 다른 글
프로그래머스 2단계 : 영어 끝말잇기 (Java 자바) (0) | 2023.09.20 |
---|---|
프로그래머스 2단계 : 이진 변환 반복하기 (Java 자바) (0) | 2023.09.20 |
프로그래머스 3단계 : 자물쇠와 열쇠 (Java 자바) (0) | 2023.09.14 |
프로그래머스 3단계 : 합승 택시 요금 (Java 자바) (0) | 2023.09.14 |
프로그래머스 3단계 : 경주로 건설 (Java 자바) (0) | 2023.09.14 |