https://school.programmers.co.kr/learn/courses/30/lessons/155651
파싱 + 정렬 + 우선순위 큐(스케쥴링) 문제다.
웰노운 문제에 파싱(시간활용)을 섞은 느낌이었다.
import java.util.*;
class Solution {
public int solution(String[][] book_time) {
int R = book_time.length;
int loom = 1;
int[][] times = new int[R][2];
PriorityQueue<Integer> pq = new PriorityQueue<>();
for(int i=0; i<R; i++) {
String[] stInfo = book_time[i][0].split(":");
String[] edInfo = book_time[i][1].split(":");
times[i][0] = Integer.parseInt(stInfo[0]) * 60 + Integer.parseInt(stInfo[1]);
times[i][1] = Integer.parseInt(edInfo[0]) * 60 + Integer.parseInt(edInfo[1]);
}
// 대실 시작 시간순 정렬
Arrays.sort(times, (a1, a2) -> a1[0] - a2[0]);
for(int i=0; i<R; i++) {
int st = times[i][0];
int ed = times[i][1] + 10;
while(!pq.isEmpty() && pq.peek() <= st) {
pq.poll();
}
if(!pq.isEmpty() && pq.peek() > st) {
loom = Math.max(pq.size() + 1, loom);
}
pq.offer(ed);
}
return loom;
}
}
'[프로그래머스] 절대 외부 IDE를 써선 안돼 > Java' 카테고리의 다른 글
[lv2] 배달 (0) | 2024.12.13 |
---|---|
[lv2] 시소 짝꿍 (0) | 2024.12.12 |
[lv2] 할인 행사 (0) | 2024.12.12 |
[lv2] k진수에서 소수 개수 구하기 (0) | 2024.12.12 |
[lv2] 마법의 엘리베이터 (0) | 2024.12.10 |