728x90
반응형
문제:
풀이방법:
시간은 한정되어 있기 때문에 모든 케이스를 다 고려하는 방법으로 문제를 해결했다. 최대로 필요한 객실의 수는 입력으로 들어오는 book_time의 길이와 같다. 따라서 book_time의 높이와 시간의 길이를 가지는 배열(hotel)을 만들도록 한다.
그리고 각 예약 손님이 사용하는 길이를 hotel 배열에 기록한다. 이 때, 10분간 청소를 하는 시간 또한 같이 고려하도록 한다. 모든 예약 손님에 대해 기록을 완료했다면 세로로 hotel 배열을 탐색하며 가장 많이 겹치는 구간을 답으로 선정한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
def convert_time(tm):
hh, mm = map(int, tm.split(":"))
return hh*60 + mm
def solution(book_time):
book_time = sorted(book_time)
hotel = [[0 for _ in range(60*24)] for _ in range(len(book_time))]
for i, bt in enumerate(book_time):
st, et = bt
st = convert_time(st)
et = convert_time(et)
for t in range(st, et+10):
if t>=60*24:
break
hotel[i][t] = 1
answer = 0
for i in range(60*24):
count = 0
for j in range(len(book_time)):
count += hotel[j][i]
answer = max(answer, count)
return answer
|
cs |
문제링크:
https://school.programmers.co.kr/learn/courses/30/lessons/155651
728x90
반응형
'Algorithm > Python' 카테고리의 다른 글
[Programmers] Lv 2. 점 찍기 (0) | 2023.07.27 |
---|---|
[BOJ] 2607. 비슷한 단어 (0) | 2023.07.26 |
[BOJ] 1515. 수 이어 쓰기 (0) | 2023.07.24 |
[Programmers] Lv 2. 무인도 여행 (0) | 2023.07.21 |
[BOJ] 19941. 햄버거 분배 (0) | 2023.07.20 |