Question
호텔을 운영 중인 코니는 최소한의 객실만을 사용하여 예약 손님들을 받으려고 합니다.
한 번 사용한 객실은 퇴실 시간을 기준으로 10분간 청소를 하고 다음 손님들이 사용할 수 있습니다.
예약 시각이 문자열 형태로 담긴 2차원 배열 book_time이 매개변수로 주어질 때,
코니에게 필요한 최소 객실의 수를 return 하는 solution 함수를 완성해주세요.
Answer Code
public class rentHotel {
public int solution(String[][] book_time) {
int max = Integer.MIN_VALUE;
int [] check = new int [1440];
int answer;
for (int i = 0; i < book_time.length; i++) {
// 입실 시간을 분으로 변경
String startStr = book_time[i][0];
String startSplit [] = startStr.split(":");
int startHour = Integer.parseInt(startSplit[0])*60;
int startMin = Integer.parseInt(startSplit[1]);
int startTime = startHour+startMin;
// 퇴실 시간을 분으로 변경
String endStr = book_time[i][1];
String endSplit [] = endStr.split(":");
int endHour = Integer.parseInt(endSplit[0])*60;
int endMin = Integer.parseInt(endSplit[1]);
int endTime = endHour+endMin+10;
//12시가 넘어서 퇴실하는 사람은 모두 12시까지만 있는 것으로 구현
if (endTime >= 1440){
endTime = 1440;
}
// 입실 부터 퇴실까지 1개의 방을 차지한다고 생각하고, 1씩 증가
for (int j = startTime; j <endTime ; j++) {
check[j] +=1;
// 필요한 방의 갯수 return
max = Math.max(max, check[j]);
}
}
answer = max;
return answer;
}
}
check 배열을 쓰는게 익숙치가 않았지만 방법을 알고 나니까 구현자체는 오래 걸리지 않았다
생각의 전환. 다른 사람들의 코드를 보는 것이 왜 중요한지 또다시 뼈저리게 깨닫는다..