알고리즘
프로그래머스 호텔 대실 (JAVA)
박카스마시며코딩
2023. 4. 4. 12:55
https://school.programmers.co.kr/learn/courses/30/lessons/155651
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.*;
class Solution {
private static class Reservation{
int startTime;
int endTime;
public Reservation(int startTime, int endTime){
this.startTime = startTime;
this.endTime = endTime;
}
}
public int solution(String[][] book_time) {
int answer = 0;
int size = book_time.length;
Arrays.sort(book_time,(o1,o2)->{
return o1[0].compareTo(o2[0]);
});
Reservation[] reservations = new Reservation[size];
for(int i = 0 ; i < size ; i++){
String[] str = book_time[i];
Reservation reservation = changeReservation(str);
reservations[i] = reservation;
}
PriorityQueue<Reservation> pq = new PriorityQueue<>((o1,o2)->{
return o1.endTime - o2.endTime;
});
for(int i = 0 ; i < size ; i++){
if(!pq.isEmpty() && pq.peek().endTime <= reservations[i].startTime){
pq.poll();
}
pq.offer(reservations[i]);
answer = Math.max(answer,pq.size());
}
return answer;
}
private static Reservation changeReservation(String[] str){
int startTime = strToTime(str[0]);
int endTime = strToTime(str[1]) + 10;
return new Reservation(startTime,endTime);
}
private static int strToTime(String str){
String[] temp = str.split(":");
int hour = Integer.parseInt(temp[0]);
int min = Integer.parseInt(temp[1]);
return hour * 60 + min;
}
}