호텔 대실
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
- 내 풀이
- 처음에 요격 시스템이랑 유사한 문제라고 생각하고 끝지점으로 정렬 해버림
- 하지만, 요격 시스템이 여러팀을 한번에 처리하는 방식이라면,
- 이번 문제는 각 호텔 방마다 1개의 팀만 가능하기 때문에 아예 다른 문제임
- "겹치지 않도록 배정하는 문제" → 시작 시간 기준 정렬
- "덮거나 포함시키는 문제" → 끝나는 지점 기준 정렬
- heap을 이용해서 시작시간이 가장 빠른 방을 찾고
- 가지고 있는 객실 중에 가장 빨리 끝난 방과 시작시간을 비교하면서
- 방을 늘릴지, 해당 방을 쓸지 결정
import heapq
def solution(book_time):
time=[]
for bk in book_time:
sh,sm=map(int,bk[0].split(":"))
eh,em=map(int,bk[1].split(":"))
heapq.heappush(time, (sh*60+sm,eh*60+em))
result=[]
heapq.heappush(result,0)
cnt=1
while time:
s,e=heapq.heappop(time)
x=heapq.heappop(result)
if x<=s:
heapq.heappush(result,e+10)
else:
heapq.heappush(result,x)
cnt+=1
heapq.heappush(result,e+10)
return cnt
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 연속 펄스 부분 수열의 합 (1) | 2025.05.13 |
|---|---|
| [프로그래머스][구현] 2개 이하로 다른 비트 (0) | 2025.05.13 |
| [프로그래머스][백트래킹][순열] 불량 사용자 (0) | 2025.04.25 |
| [프로그래머스][BFS] 리코쳇 로봇 (1) | 2025.04.24 |
| [프로그래머스][투포인터] 보석 쇼핑 (1) | 2025.04.24 |