https://school.programmers.co.kr/learn/courses/30/lessons/155651
문제 접근
입실 시간 정렬, 들어갈 수 있는지 없는지 true, false로 비교해보는 등 생각이 떠오른 건 있지만 정답으로의 접근이 수월치 않았다.
누적합을 이용하여 배열에서 인덱스가 누적된 횟수만큼 방 갯수를 return 해주는 방법으로 푼 방법이 있더라
이 분 풀이를 보면 그림으로도 설명되있어서 이해하기 편하다.
https://ksb-dev.tistory.com/269
다른 사람 풀이
import java.util.*;
class Solution {
static int maxTime = 1450;
static int hour = 60;
static int cleanTime = 10;
public int solution(String[][] book_time) {
int answer = 0;
int[] room = new int[maxTime];
for(String[] time : book_time) {
String checkIn = time[0];
String checkOut = time[1];
room[calTime(checkIn)] += 1;
room[calTime(checkOut)+ cleanTime] += -1;
}
for(int i=1; i<maxTime; i++) {
room[i] += room[i-1];
answer = Math.max(answer, room[i]); // 최대로 누적된 수 만큼 방이 필요
}
return answer;
}
public static int calTime(String time) {
String[] split = time.split(":"); // 입실, 퇴실 시간 쪼개기
String h = split[0];
String m = split[1];
return (Integer.parseInt(h) * hour) + Integer.parseInt(m);
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / 무인도 여행 / JAVA] (0) | 2023.05.29 |
---|---|
[프로그래머스 / 요격 시스템 / JAVA] (0) | 2023.05.27 |
[프로그래머스 / 연속된 부분 수열의 합 / JAVA] (1) | 2023.04.13 |
[프로그래머스 / 달리기 경주 / JAVA] (0) | 2023.04.11 |
[프로그래머스 / 추억 점수 / JAVA] (0) | 2023.03.31 |
댓글