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 |