풀이과정
- 시간을 초단위로 모두 바꾸어 준다.
- 전날 -> 오늘로 넘어오는 케이스도 있으므로 완료시간(초)에 + 4 해준다.
- 완료시간으로 시작시간을 구해준다. - 시작 시간 = 완료시간 - 처리시간 + 0.001
- 시작 시간 기준으로 정렬을 해준다.
- 시작 시간을 기준으로 반복문을 돌면서, 최소 히프에 완료 시간을 기준으로 넣어준다.
- 넣어준 다음, 현재 시간 + 1 기준으로 끝난 작업들은 히프에서 빼준다.
- 히프에 남아있는 요소들의 개수가 현재 겹치는 작업들을 의미하므로 answer을 갱신해준다.
소스 코드
import heapq
import math
def convert_second(s):
hour = int(s[0:2])
minute = int(s[3:5])
second = int(s[6:8])
msecond = int(s[9:]) / 1000
return 4 + 3600 * hour + 60 * minute + second + msecond
def solution(lines):
answer = 0
cv_list = []
for line in lines:
temp = line.split()
end = convert_second(temp[1])
start = round(end - float(temp[2][:-1]) + 0.001, 3)
cv_list.append([start, end])
cv_list.sort()
heap = []
for start, end in cv_list:
heapq.heappush(heap, [end, start])
while heap:
if heap[0][0] + 1 <= start:
heapq.heappop(heap)
else:
break
answer = max(answer, len(heap))
return answer
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
'알고리즘[Python] > 프로그래머스' 카테고리의 다른 글
[ Lv 3 ] 가장 긴 팰린드롬 (0) | 2021.07.20 |
---|---|
[ Lv 3 ] [ 1차 ] 셔틀버스 (0) | 2021.07.20 |
[ Lv 3 ] 광고 삽입 (0) | 2021.07.19 |
[ Lv 3 ] 숫자 게임 (0) | 2021.07.18 |
[ Lv 3 ] 하노이의 탑 (0) | 2021.07.18 |