프로그래머스 - 셔틀버스

J-Keonho·2020년 9월 21일
0

해당 알고리즘 자료는 제가 직접 푼 것도 있지만 다른 분들의 풀이과의 비교를 통해 더 나은 알고리즘을 공부하기 위해 정리한 것들입니다.

프로그래머스 - 셔틀버스

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);
    }
}
profile
안녕하세요.

0개의 댓글