シャトルバス
アルゴリズムの資料は私も自分で解答したことがありますが、他の人との解答の比較を通じて、私が整理したこれらの資料はもっと良いアルゴリズムを学ぶためです.
プログラマー-シャトルバス
https://programmers.co.kr/learn/courses/30/lessons/17678
解答:バス時間をデジタルシーケンス/保存に変換した後、PriorityQueueでバスの乗客をチェックします.最後に乗った人を確認します.
import java.util.*;
class Solution {
public String solution(int n, int t, int m, String[] timetable) {
int [] arr = new int [n];
arr[0] = 540;
for (int i = 1; i < arr.length; i++) {
arr[i] += arr[i-1] + t;
}
PriorityQueue <Integer> qu = new PriorityQueue<Integer>((a,b) -> a-b);
for(String str : timetable) {
int time = Integer.parseInt(str.substring(3));
time += Integer.parseInt(str.substring(0, 2)) * 60;
qu.add(time);
}
int last = 0;
for (int i = 0; i < arr.length; i++) {
last = arr[i];
for (int j = 0; j < m; j++) {
if(qu.isEmpty()) {
last = arr[i];
break;
}
else if(arr[i] >= qu.peek()) {
last = qu.poll();
if(j == m-1) last--;
}
}
}
return String.format("%02d:%02d", last/60, last%60);
}
}
Reference
この問題について(シャトルバス), 我々は、より多くの情報をここで見つけました https://velog.io/@jkh2801/프로그래머스-셔틀버스テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol