https://school.programmers.co.kr/learn/courses/30/lessons/155651
가장 생각든 접근법은
1) '대실 시작 시각'을 기준으로 sort()해주기
2) 들어갈 수 있는 시간이 없으면 ROOM을 하나 생성해서 만들어주기
3) 최종적으로 나오는 ROOM의 개수를 return
=> 그런데 실제 풀이를 보면 달랐다. 우선 sort를 하되, dict를 이용해서 max값을 구하거나 heap을 이용해서 pop,push를 반복적으로 사용해서 구하는 방법을 사용했다. 결국 누적합 문제였던걸로..
def time2val(time):
return int(time[:2])*60+int(time[3:5])
def solution(book_time):
dic={}
for book in book_time:
start=time2val(book[0])
end=time2val(book[1])
for t in range(start,end+10):
if dic.get(t)==None:
dic[t]=1
else:
dic[t]+=1
return max(dic.values())
from heapq import heappop, heappush
def solution(book_time):
answer = 1
# "HH:MM" → HH * 60 + MM
book_time_ref = [(int(s[:2]) * 60 + int(s[3:]), int(e[:2]) * 60 + int(e[3:])) for s, e in book_time]
book_time_ref.sort()
heap = []
for s, e in book_time_ref:
if not heap:
heappush(heap,e)
continue
if heap[0] <= s:
heappop(heap)
else:
answer += 1
heappush(heap,e+10)
return answer
from heapq import heappop, heappush
def solution(book_time):
rooms = []
book_time.sort(key = lambda _:_[0])
for book in book_time :
check_in = num(book[0])
check_out = num(book[1]) + 10
if len(rooms) != 0 and rooms[0] <= check_in :
heappop(rooms)
heappush(rooms,check_out)
return len(rooms)
def num(HHMM) :
return 60*int(HHMM[:2]) + int(HHMM[3:])
'코테 준비 > 프로그래머스' 카테고리의 다른 글
[SQL_SUM,MAX,MIN] (0) | 2023.06.12 |
---|---|
[SQL_SELECT] (1) | 2023.06.12 |
[level 2] 점 찍기 (0) | 2023.05.26 |
[level 2] 택배상자 (0) | 2023.05.23 |
[level 2] k진수에서 소수 개수 구하기 (1) | 2023.05.14 |