def solution(n, t, m, timetable):
global bus_time
# νμλ€μ μκ°λμ λ§μΆ° μ€λ¦μ°¨μμΌλ‘ μ 리νλ€
timetable.sort()
# 0λ² νμλΆν° μ΄ν΄λ³Ό κ²μ΄λ€
count = 0
# μ 체 λ²μ€ μνλ₯Ό busesμ κΈ°λ‘νλ€
buses = [[] for _ in range(n)]
for bus in range(n):
# νμ¬ λ²μ€μ μκ°μ λΆμΌλ‘ λͺ¨λ νμ°νμ¬ κ³μ°νλ€
bus_time = 9 * 60 + bus * t
for _ in range(m):
# νμ¬ κ³ λ € μ€μΈ νμμ μκ°λ λΆμΌλ‘ λͺ¨λ νμ°νλ€
hours, mins = map(int, timetable[count].split(":"))
student_time = hours * 60 + mins
# λ²μ€λ³΄λ€ νμμ΄ λ¨Όμ νΉμ κ°μ μκ°μ μλ€λ©΄
if bus_time >= student_time:
# κ·Έ νμμ λ²μ€μ νμ°κ³ λ€μ νμ(count += 1)μ νλ€
count += 1
buses[bus].append(student_time)
# λͺ¨λ νμμ΄ λ²μ€μ νλμ§ νμΈνλ€
if count == len(timetable):
break
# νμ¬ κ°μ₯ λ¨Όμ λμ°©ν νμ μ‘°μ°¨ λ²μ€μ ν μ μλ€λ©΄, λ€μ λ²μ€μ λν΄ μμλ³Έλ€
else:
break
if count == len(timetable):
break
# κ°μ₯ λ§μ§λ§ λ²μ€μ λͺ¨λ μΉκ°μ΄ νλ€λ©΄
if len(buses[-1]) == m:
# κ·Έ λ²μ€μ νμΉν νμλ€μ΄ λͺ¨λ κ°μ μκ°μ μλ€λ©΄
if len(set(buses[-1])) == 1:
# κ·Έ νμλ€λ³΄λ€ 1λΆλ§ λ¨Όμ λκ°λ©΄ λλ€
student_time = buses[-1][0] - 1
else:
# κ·Έ λ²μ€μ νμΉν νμλ€μ΄ μλ‘ λ€λ₯Έ μκ°μ μλ€λ©΄ λ§μ§λ§ νμ보λ€λ§ 1λΆ λΉ¨λ¦¬κ°λ©΄ λλ€
student_time = buses[-1][-1]
count = 1
while True:
count += 1
if buses[-1][-count] != student_time:
student_time -= 1
break
# κ°μ₯ λ§μ§λ§ λ²μ€μ μλ¦¬κ° λ¨μλ€λ©΄ κ·Έ λ²μ€ μκ°μ λ§μΆ° λκ°λ©΄ λλ€
else:
student_time = bus_time
answer_h, answer_m = map(str, divmod(student_time, 60))
answer_h = "0" + answer_h if len(answer_h) == 1 else answer_h
answer_m = "0" + answer_m if len(answer_m) == 1 else answer_m
return answer_h + ":" + answer_m