문제링크
셔틀버스 : 링크
문제 풀이
생각
다 필요없고 마지막 셔틀버스가 사람으로 꽉 찼는지 아닌지만 체크하면 될듯허다.
풀이 방법
- String Type의 시간 HH:MM을 Int Type으로 전환 시킬 함수와 그 반대의 함수를 생성
- 크루들이 셔틀을 기다리기 시작하는 시간을 toMinute함수를 통해 Int로 전환하여 그 값을 오름차순으로 sorting
- 앞의 셔틀부터 기준에 맞게 크루를 태워나간다.
- 마지막 셔틀버스에
- 사람이 가득 찬다면 : 콘은 마지막에 탄 사람보다 1분 일찍 나와야한다.
- 빈자리가 있다면 : 마지막 셔틀버스가 출발하는 시간에 나가야 한다.
- 4의 결과를 toTime을 통해 String으로 전환하여 return한다.
코드
import java.util.ArrayList;
import java.util.Collections;
public class Q17678 {
static ArrayList<Integer> crewTime = new ArrayList<>();
static int toMinute(String time){
int minute = 0;
String[] tmp = time.split(":");
String tmpHour = tmp[0];
String tmpMinute = tmp[1];
minute += Integer.parseInt(tmpHour)*60 + Integer.parseInt(tmpMinute);
return minute;
}
static String toTime(int minute){
String hour;
String min;
hour = Integer.toString(minute/60);
if(hour.length()==1){
hour = "0"+hour;
}
min = Integer.toString(minute%60);
if(min.length()==1){
min = "0"+min;
}
return hour+":"+min;
}
public static String solution(int n, int t, int m, String[] timetable) {
for(String time : timetable){
if(time.equals("23:59")){
continue;
}
crewTime.add(toMinute(time));
}
Collections.sort(crewTime);
int index = 0;
boolean check = false;
int lastTime=0;
for(int i =0; i<n; i++){
int standardTime = 540+t*i;
int count = 0;
while(true){
if(index == crewTime.size()){
if(i!=n-1){
break;
}
if(count == m){
check = true;
lastTime = crewTime.get(index-1);
}
break;
}
if(count == m){
if(i == n-1){
lastTime = crewTime.get(index-1);
check = true;
}
break;
}
if(crewTime.get(index)>standardTime){
break;
}
index++;
count++;
}
}
if(check){
return toTime(lastTime-1);
}
return toTime(540+t*(n-1));
}
public static void main(String[] args){
int n = 2;
int t = 5;
int m = 5;
String[] timetable = {"08:00","09:00","09:00","09:00","09:00"};
System.out.println(solution(n,t,m,timetable));
}
}
바로 떠오르지 않았어서 뱅글뱅글 돌아갔다. 허무하구려 껄껄
'Study > Algorithm' 카테고리의 다른 글
[Algorithm]Programmers_12952_N-Queen_Go (0) | 2021.09.16 |
---|---|
[Algorithm]Programmers_43238_입국심사_Go (0) | 2021.09.15 |
[Algorithm]Programmers_17683_방금그곡_Java (0) | 2021.09.03 |
[Algorithm]BOJ_20056_마법사 상어와 파이어볼_Go (0) | 2021.08.23 |
[Algorithm]BOJ_14500_테트로미노_Go (0) | 2021.08.12 |