프로그래머스 호텔 대실 java

배인성·2023년 3월 1일
0

프로그래머스

목록 보기
45/55
post-thumbnail

문제 링크

문제 링크

문제 설명

제한 사항

입출력 예

입출력 예 설명 (짧아서 여기다 올림 ㅎ)

풀이

  1. 하루는 1440분이다. "HH:MM"으로 표현된 시간들을 전부 분(M)으로 표현하자. 그걸 int 배열로 만들어내면 하나의 길다란 예약 현황표기 된다. (청소 10분까지 해서 1450개)
  2. 예약이 된 시간은 +1씩 더하자.
    2-1 이때, 청소시간 (10분)이 끝나자마자 다음 예약자가 들어갈 수 있다는 설정은 정수 관점에서 봤을때, 시작시간은 그대로 두고, 끝나는 시간에 +10분이 아닌, +9분만 하면 된다
  3. 예약 현황표의 최댓값이 곧 필요한 방의 개수가 된다.

코드

import java.util.*;
class Solution {
    
    public int timeToInteger(String time, boolean isEnd) {
        int res = Integer.parseInt(time.substring(0,2)) * 60 + Integer.parseInt(time.substring(3,5));
        if(isEnd) 
            res += 9;
        return res;
    }
    
    public int solution(String[][] book_time) {
        int answer = 0;
        int[] rooms = new int[1449];
        for(int i = 0; i < book_time.length; i++) {
            int staT = timeToInteger(book_time[i][0], false);
            int endT = timeToInteger(book_time[i][1], true);
            for(int j = staT; j <= endT; rooms[j++]++);
        }
        for(int i = 0; i < rooms.length; i++) {
            if(answer < rooms[i])
                answer = rooms[i];
        }
        return answer;
    }
}
profile
부지런히 살자!!

0개의 댓글