[프로그래머스] 레벨2 호텔 대실
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];
}
}