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

코드
from collections import deque
def to_minutes(time):
h, m = map(int, time.split(":"))
return h * 60 + m
def to_timestr(minutes):
h = minutes // 60
m = minutes % 60
return f"{h:02d}:{m:02d}"
def solution(n, t, m, timetable):
timetable = sorted([to_minutes(minute) for minute in timetable])
shuttles = [540 + i * t for i in range(n)]
queue = deque(timetable)
for bus in shuttles:
cnt = 0
while queue and queue[0] <= bus and cnt < m:
last = queue.popleft()
cnt += 1
if cnt < m:
return to_timestr(shuttles[-1])
else:
return to_timestr(last - 1)
복잡해 보이는 문제이지만 타임테이블을 분으로 치환 후 정렬하고, 9시부터 t간격으로 n번 오는 셔틀을 리스트에 저장해서 루프를 돌리며 탑승 가능한 인원을 체크하고, 마지막 셔틀에서 자리가 남으면 셔틀 도착 시간, 자리가 없으면 마지막 탑승자 - 1분이 가능한 도착 시간 중 가장 늦은 시간이다.
'Coding Test > Programmers' 카테고리의 다른 글
| Programmers / 비밀 코드 해독 / Python (0) | 2025.11.05 |
|---|---|
| Programmers / 하노이의 탑 / python 파이썬 (0) | 2025.10.07 |
| Programmers / 공원 / python 파이썬 / PCCE 기출 (1) | 2025.08.15 |
| Programmers / 공원 산책 / python 파이썬 (1) | 2025.07.10 |
| Programmers / 가장 큰 정사각형 찾기 / python 파이썬 (1) | 2025.07.05 |