https://school.programmers.co.kr/learn/courses/30/lessons/176962
def solution(plans):
answer = []
arr=[]
for plan in plans:
hour, minute = map(int, plan[1].split(":"))
arr.append([plan[0], hour*60+minute, int(plan[2])])
arr.sort(key=lambda x: x[1])
stack=[]
for i in range(len(arr)-1):
time = arr[i+1][1]-arr[i][1]
if arr[i][2]==time:
answer.append(arr[i][0])
elif arr[i][2]>time:
arr[i][2]-=time
stack.append(i)
else:
time-=arr[i][2]
answer.append(arr[i][0])
while stack:
idx = stack.pop()
if arr[idx][2]==time:
answer.append(arr[idx][0])
break
elif arr[idx][2]>time:
arr[idx][2]-=time
stack.append(idx)
break
else:
time-=arr[idx][2]
answer.append(arr[idx][0])
answer.append(arr[-1][0])
while stack:
idx=stack.pop()
answer.append(arr[idx][0])
return answer