[프로그래머스] 셔틀버스
문제
- 셔틀을
09:00
부터 총n
회t
분 간격으로 역에 도착하며, 하나의 셔틀에는 최대m
명의 승객이 탈 수 있다. - 셔틀은 도착했을 때 도착한 순간에 대기열에 선 크루까지 포함해서 대기 순서대로 태우고 바로 출발한다. 예를 들어
09:00
에 도착한 셔틀은 자리가 있다면09:00
에 줄을 선 크루도 탈 수 있다.
콘이 셔틀을 타고 사무실로 갈 수 있는 도착 시간 중 제일 늦은 시각을 구하여라.
입력형식
- 셔틀 운행 횟수 n (0<n<=10)
- 셔틀 운행 간격 t (0<t<=60)
- 한 셔틀에 탈 수 있는 최대 크루 수 m (
- 크루가 대기열에 도착하는 시각을 모은 배열 timetable
- 1 <= len(timetable) <= 2000
- HH:MM 형식
00:01
에서23:59
사이이다.
출력형식
콘이 무사히 셔틀을 타고 사무실로 갈 수 있는 제일 늦은 도착 시각을 출력한다. 도착 시각은 HH:MM 형식이며, 00:00
에서 23:59
사이의 값이 될 수 있다.
코드
def solution(n, t, m, timetable):
answer = ''
timetable.sort()
bus = [[540 + ( t * x), 0, 0] for x in range(n)]
num = 0 # bus 번호
for time in [getTimeNum(x) for x in timetable]:
while num < len(bus) and (time > bus[num][0] or bus[num][1] >= m):
num += 1
if num == len(bus): break
bus[num][1] += 1
bus[num][2] = time
return getTimeStr(bus[-1][0]) if bus[-1][1] < m else getTimeStr(bus[-1][2] - 1)
def getTimeNum(time):
hour, minute = map(int, time.split(":"))
return hour * 60 + minute
def getTimeStr(time):
return '%02d:%02d' % (time // 60, time % 60)
Author And Source
이 문제에 관하여([프로그래머스] 셔틀버스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@haman/프로그래머스-셔틀버스저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)