https://school.programmers.co.kr/learn/courses/30/lessons/17678

1) 코드
def solution(n, t, m, timetable):
newTimeTable = []
for time in timetable:
data = time.split(":")
newTime = 60*int(data[0])+int(data[1])
newTimeTable.append(newTime)
newTimeTable.sort()
currBusTime = 540
currBusNum = 0
bus = [[] for _ in range(n)]
while currBusNum != n:
rideBus = 0
for i in range(m):
if i <= len(newTimeTable)-1 and newTimeTable[i] <= currBusTime:
bus[currBusNum].append(newTimeTable[i])
rideBus += 1
for i in range(rideBus):
newTimeTable.pop(0)
currBusTime += t
currBusNum += 1
lastNum = n-1
lastBusTime = currBusTime - t
if len(bus[lastNum]) == m:
answer = bus[lastNum][-1]-1
else:
answer = lastBusTime
hour = answer // 60
minute = answer % 60
if hour >= 10:
if minute >= 10:
answerStr = str(hour) + ":" + str(minute)
else:
answerStr = str(hour) + ":" + "0" + str(minute)
else:
if minute >= 10:
answerStr = '0' + str(hour) + ":" + str(minute)
else:
answerStr = '0' + str(hour) + ":" + "0" + str(minute)
return answerStr
2) 해설