https://school.programmers.co.kr/learn/courses/30/lessons/155651
이중 포문 코드
def solution(book_time):
time = [0]*1440
timetable = [
(int(start[:2])*60+int(start[3:]), int(end[:2])*60+int(end[3:]))
for start, end in book_time
]
timetable.sort()
for start, end in timetable:
end += 10
if end >= 1439:
end = 1439
for i in range(start, end):
time[i] += 1
return max(time)
누적합 방식의 코드
def solution(book_time):
time = [0]*1450
for start, end in book_time:
time[int(start[:2]) * 60 + int(start[3:])] += 1
time[int(end[:2]) * 60 + int(end[3:]) + 10] += -1
num = 0
for i in range(len(time)):
num += time[i]
time[i] = num
return max(time)
누적합에 대해 학습했다.
시작점은 1, 종료지점에는 -1의 초기값을 지정한다.
"""
ex) 5분 ~ 15분
5분부터 10분간 점검을 수행한다면
15분부터 사용 가능하다.
output)
A. [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
B. [0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
"""
lst = [0] * 30
lst[5] = 1 # A
lst[15] = -1 # A
num = 0
for i in range(len(lst)):
num += lst[i]
lst[i] = num # B