Merge Sort와 비슷한 느낌으로 구현해주시면 됩니다. string의 시간을 적절히 숫자로 바꿔주는 작업이 필요합니다. 필수로 필요하진 않지만 예외처리를 줄이기 위해 booked/unbooked 끝에 dummy data를 추가하였습니다.
def parse_time(t):
h,m = t.split(':')
return int(h)*60 + int(m)
def solution(booked, unbooked):
booked = [(parse_time(t), name) for t, name in booked] + [(1000000, None)]
unbooked = [(parse_time(t), name) for t, name in unbooked] + [(1000000, None)]
booked.sort()
unbooked.sort()
t,b,u,answer = 0,0,0,[]
while b < len(booked) and u < len(unbooked):
t1, t2 = booked[b][0], unbooked[u][0]
if t1 <= t:
answer.append(booked[b][1])
b += 1
t += 10
elif t2 <= t:
answer.append(unbooked[u][1])
u += 1
t += 10
else:
t = min(t1,t2)
answer.pop()
return answer
booked = [(parse_time(t), name) for t, name in booked] + [(1000000, None)]
==> [(595, 'hae'), (605, 'jee'), (1000000, None)]