def solution(n, t, m, timetable): timetable.sort() # 타임테이블 정렬 crew_n = len(timetable) # 타임테이블 개수 for i in range(crew_n): # 시간표를 분으로 전환 hour, minutes = map(int, timetable[i].split(':')) timetable[i] = hour * 60 + minutes bus_time = 9 * 60 - t # 버스 처음 시간 p = 0 # 크루 포인터 for bus in range(1, n + 1): bus_time += t # 버스 시간 passenger = 0 # 탑승 크루 수 for crew in range(p, crew_n): # 안탄 크루들 태우기 if timetable[crew] <= bus_time: # 현재 버스 시간에 오거나, 먼저 와있는 크루라면 passenger += 1 # 태우기 if m == passenger: # 만석이라면 if bus == n: # 근데 마지막 버스라면 answer = timetable[crew] - 1 # 맨 마지막 탑승 크루보다 1분 일찍와 hour, minutes = divmod(answer, 60) return f'{hour:0>2}:{minutes:0>2}' # 문자열로 바꾸고 return else: p = crew + 1 # 만석인데 마지막 버스 아니면 break # 다음 크루부터 태우도록 포인터 옮기기 else: # 크루가 버스 시간보다 더 늦게왔다면 p = crew # 지금 크루부터 다음 버스에 태우도록 포인터 옮기기 break # 다음 버스 오도록 break hour, minutes = divmod(bus_time, 60) return f'{hour:0>2}:{minutes:0>2}' # break 안걸렸으면 마지막 버스 타 그냥
'Algorithm > Programmers' 카테고리의 다른 글
[Python] H-Index (0) | 2022.09.22 |
---|---|
[Python] 후보키 (0) | 2021.10.28 |
[Python] 오픈채팅방 (0) | 2021.10.26 |
[Python] 여행 경로 (0) | 2021.06.28 |
[Python] 네트워크 (0) | 2021.06.20 |