[ 다먹살 ]/- Coding

[프로그래머스] 레벨2 호텔 대실

엉망으로살기 2023. 2. 28. 17:12
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/155651?language=java 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

일단 이 문제는 book_time의 길이가 1000으로 제한되었기도 하고 하루를 24시간으로 봤을 때 배열의 크기는 시간을 분으로 봤을 때 최대가 24*60이므로 시간, 공간복잡도를 크게 생각하진 않아도 되었다.

나는 일단 입력받은 값들을 먼저 전처리 한 이후 대실 시작시간과 종료시간을 전체 분으로 변환해서 배열에 전부 +1 시켜주었다. 그리고 이전 종료시간과 다음 대실시간이 값으로는 일치할 수 있지만 실제로는 방이 겹치지 않는다고 되어있기 때문에 시작시간 stime에는 +1을 해주었고, 대실 종료 후 청소시간이 10분이므로 etime에 강제로 +10을 더해주었다. 

근데 청소시간이 10분으로 되려나?


문제 및 입출력


코드

import java.util.Arrays;

class Solution
{
    public int solution(String[][] book_time)
    {
        int[] time = new int[24*60+1];
        
        for(int i=0; i<book_time.length; i++)
        {
            String[] start = book_time[i][0].split(":");
            String[] end = book_time[i][1].split(":");
            int stime = Integer.parseInt(start[0])*60 + Integer.parseInt(start[1]) + 1;
            int etime = Integer.parseInt(end[0])*60 + Integer.parseInt(end[1]) + 10;
            
            if(etime>24*60)
            {
                etime = 24*60;
            }
            
            for(int j=stime; j<=etime; j++)
            {
                time[j]++;
            }
        }
        
        Arrays.sort(time);
        return time[time.length-1];
    }
}

반응형