Programmers - 호텔 대실 155651번
https://school.programmers.co.kr/learn/courses/30/lessons/155651
이 문제는 데이터 사이즈가 작아서 시간복잡도를 생각 안해도 될거 같았다.
그래서 처음엔 재귀를 사용해서 풀었는데, 누적합을 사용해서 푸는 방법이 있어서
해당 방법을 이용해 보았다.
시간은 계산하기 편하게, 시간 을 분 으로 통합하여 계산 했다.
Code
xpublic class Programmers_155651 {
final int CLEAN_TIME = 10;
final int MAX_TIME = 60 * 24 + CLEAN_TIME;
public int solution(String[][] book_time) {
int answer = 0;
int[] timeCheck = new int[MAX_TIME];
for(String[] time : book_time) {
String start_time = time[0];
String end_time = time[1];
timeCheck[bookCheck(start_time)] += 1;
timeCheck[bookCheck(end_time) + CLEAN_TIME] -= 1;
}
for(int i = 1; i < MAX_TIME; i++) {
timeCheck[i] += timeCheck[i - 1];
answer = Math.max(answer, timeCheck[i]);
}
return answer;
}
public int bookCheck(String time) {
String[] times = time.split(":");
int hour = Integer.parseInt(times[0]);
int minute = Integer.parseInt(times[1]);
return (hour * 60) + minute;
}
}
'알고리즘' 카테고리의 다른 글
Programmers - 미로탈출 159993번 (0) | 2023.02.25 |
---|---|
Programmers - 무인도 여행 154540번 (0) | 2023.02.20 |
Vector 2차원 동적 할당 해보리기 (0) | 2018.04.03 |
C++) 합병 정렬 (Merge Sort) (0) | 2017.11.05 |
Visual Studio 2017 (C++) 자연 합병 정렬 (0) | 2017.11.04 |