1. 문제 풀이 아이디어
- 예약 시간을 분 단위로 변환하여 전체 시간을 나타내는 배열에 저장하고, 배열에서 가장 큰 값을 반환하여 문제를 해결한다.
2. 나의 정답 코드
class Solution {
public int solution(String[][] book_time) {
int answer = 0;
int[] time = new int[1440];
for (String[] strings : book_time) {
int start = time(strings[0]);
int end = Math.min(time(strings[1]) + 10,1440);
for (int i = start; i < end; i++) {
time[i]++;
}
}
for (int i = 0; i < 1440; i++) {
answer = Math.max(answer, time[i]);
}
return answer;
}
private int time(String s) {
String[] split = s.split(":");
int hour = Integer.parseInt(split[0]);
int minute = Integer.parseInt(split[1]);
return hour * 60 + minute;
}
}
3. 정리
book_time
배열을 순회하며 각 예약의 입실 시간과 퇴실 시간(퇴실 후 10분 포함)을 분 단위로 변환한 뒤, 해당 시간 구간에 해당하는time
배열 값을 증가시킨다.
time
배열을 순회하여 가장 큰 값을 찾아 반환한다.
Share article