シャトルバス



アルゴリズムの資料は私も自分で解答したことがありますが、他の人との解答の比較を通じて、私が整理したこれらの資料はもっと良いアルゴリズムを学ぶためです.

プログラマー-シャトルバス


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);
    }
}