강의로 돌아가기
ggbadza

제가 푼 간단한 풀이방법..

각 입실시간, 퇴실시간+10을 합쳐서 리스트에 넣습니다(힙큐를 사용하셔도 되고, 다 넣고 정렬하셔도 됩니다. 저는 귀찮아서 그냥 정렬 돌렸습니다.)

입실시간, 퇴실시간+10을 각각 구분해주는 코드도 같이 넣어줍니다 (다만 입실,퇴실+10이 겹칠경우 퇴실이 먼저 나오도록 조정해주세요)

그리고 그 정렬된 리스트 혹은 힙큐에서 제일 작은 시간대부터 뽑아내면서
현재 사용중인 방 갯수에 입실시간이면 +1, 퇴실시간+10이면 -1를 해주면서
방 개수의 최댓값을 계속 갱신해나갑니다.

마지막으로 방 개수의 최댓값을 리턴하면 끝..

작성중인 코드―solution.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def solution(book_time):
    answer = 0
    book_time_int=[]

    for start,end in book_time:
        book_time_int.append([int(start[:2])*60+int(start[3:]),1])
        book_time_int.append([int(end[:2])*60+int(end[3:])+10,0])
    book_time_int.sort()

    now=0
    for time in book_time_int:
        if time[1]==1:
            now+=1
        else :
            now-=1
        answer=max(answer,now)

    return answer
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.