Notice
Recent Posts
Recent Comments
Link
시간이 NullNull
[JAVA] [KAKAO] 셔틀버스 본문
주요 포인트!
1. 09:00 부터 n회 t분 간격으로 역에 도착한다.
나의 경우 09:00 부터라는 것을 제대로 못봐 문제가 이해가 되지 않아 한참동안 고민을 하였다.
2. m명을 태우면 더이상 태울 수 없다 ( 단, 기다리고 있는 줄은 유지된다. )
이를 기준으로 나는 그냥 단순히 09:00 부터 각 셔틀버스마다 태울 수 있는 만큼 태우자
그리고 끝난 뒤에
1. 마지막 버스에 m명이 가득 차 있다면 마지막에 탄사람보다 1분 일찍오자!
2. 마지막 버스에 자리가 빈다면 마지막 버스가 도착할 시점에 오도록 하자!
이를 구현하기 위해서 우선 크루들이 도착하는 시간을 오름차순으로 정렬해야한다. 그래야 시간 순으로 버스에 태울 수 있기 때문이다.
그리고 시간 계산과 대소관계 비교를 원활하게 하기 위해서 시간 * 60 + 분을 하여 그냥 24시간을 다 분으로 계산하여 대소관계를 비교하였다.
마지막에 return값인 내가 와야할 시점에서는 저 때 새벽에 풀어서 비효율 적이지만 삼항연산자만 알고 있다면 내가 왜 쉽게 그렇게 if문을 남발하였는지 알 수 있을 것이다.
package kakao;
import java.util.Arrays;
public class bus {
public static void main(String[] args){
String answer = "";
int n = 10;
int t = 60;
int m = 45;
String[] timetable = {"23:59","23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59"};
int[] times = new int[timetable.length];
for(int i=0; i<times.length; ++i) {
times[i] = Integer.parseInt(timetable[i].substring(0,2))*60+Integer.parseInt(timetable[i].substring(3,5));
}
Arrays.sort(times);
int[][] waitOrder = new int[n][m];
int[] waitOrderIdx = new int[n];
int[] shuttle = new int[n];
for(int i=0; i<n; ++i) {
shuttle[i] = 540 + i * t;
}
for(int i=0; i<times.length; ++i) {
for(int j=0; j<n; ++j) {
if(times[i] <= shuttle[j]) {
if(waitOrderIdx[j] >= m) {
continue;
}
waitOrder[j][waitOrderIdx[j]] = times[i];
waitOrderIdx[j]++;
break;
}
}
}
int hour = 0;
int min = 0;
if(waitOrderIdx[n-1] >= m) {
hour = waitOrder[n-1][m-1]/60;
min = waitOrder[n-1][m-1]%60;
if( min - 1 < 0 ) {
answer = ""+( hour - 1 > 9 ? hour-1 : "0"+(hour-1))
+":59";
}else {
answer = ""+ ( hour > 9 ? hour : "0" + hour )
+":"+( min-1 > 9 ? min-1 : "0"+(min-1));
}
}else {
answer = ""+((shuttle[n-1]/60) > 9 ? (shuttle[n-1]/60) : "0"+(shuttle[n-1]/60))
+":"+( (shuttle[n-1]%60) > 10 ? (shuttle[n-1]%60) : "0"+(shuttle[n-1]%60));
}
System.out.println(answer);
}
}
'알고리즘' 카테고리의 다른 글
[JAVA] [BOJ] 17143. 낚시왕 (0) | 2019.09.04 |
---|---|
[JAVA] [SWEA] 2382. 미생물 격리 (0) | 2019.09.04 |
[JAVA] [KAKAO] 자동완성 (0) | 2019.09.04 |
[JAVA] [BOJ] 5052. 전화번호 목록 ver.2 Trie (0) | 2019.08.24 |
[JAVA] Trie 알고리즘 (0) | 2019.08.24 |