문제
https://school.programmers.co.kr/learn/courses/30/lessons/176962?language=python3
코드
from collections import deque
def convert(s):
h,m = map(int, s.split(":"))
return h*60+m
def solution(plans):
answer = []
plans=[(name, convert(start), int(playtime)) for name, start, playtime in plans]
plans.sort(key = lambda x: x[1])
stack=deque()
left_time=0
for i in range(len(plans)):
name, start, playtime = plans[i]
while stack:
_name, _playtime = stack.pop()
if left_time >= _playtime:
left_time-=_playtime
answer.append(_name)
else:
_playtime-=left_time
stack.append([_name,_playtime])
break
# 현재 작업도 작업 큐에 넣음
stack.append([name, playtime])
if i<len(plans)-1:
next_start=plans[i+1][1]
left_time=next_start-start
# 추가적인 선점이 없으므로 최근에 멈춘것 부터 수행
while stack:
_name, _playtime = stack.pop()
answer.append(_name)
return answer
'문제풀이 > 기타' 카테고리의 다른 글
[파이썬] Pro 줄 서는 방법 (0) | 2023.12.22 |
---|---|
[파이썬] Pro 택배상자 (0) | 2023.12.21 |
[JAVA] [분할정복] Pro 쿼드압축 후 개수 세기 (0) | 2023.07.26 |
[JAVA] [투포인터] 백준 13144 List of Unique Numbers (0) | 2023.07.25 |
[JAVA] Pro n^2 배열 자르기 (0) | 2023.07.25 |