본문 바로가기
Algorithm/프로그래머스

[프로그래머스] - 셔틀버스 (파이썬)

by _temp 2022. 1. 30.
def solution(n, t, m, timetable):
    crew_time = []
    for time in timetable:
        crew_time.append(get_time(time))
    crew_time.sort()

    bus_time = []
    for i in range(n):
        bus_time.append(get_bus_time(t, i))

    my_time = 0
    temp = 0
    for bus in bus_time:
        my_time = bus
        max_people = m
        for i in range(temp, len(crew_time)):
            if bus >= crew_time[i] and max_people:
                max_people -= 1
                temp += 1
                if max_people == 0:
                    my_time = crew_time[i] - 1

    answer = change_time(my_time)
    return answer


def get_time(time):
    hour = int(time[:2]) * 60
    minute = int(time[3:])
    return hour + minute


def get_bus_time(t, i):
    hour = 9*60
    return hour+t*i


def change_time(time):
    hour = str(time // 60)
    if len(hour) == 1:
        hour = '0' + hour
    minute = str(time % 60)
    if len(minute) == 1:
        minute = '0' + minute
    return hour + ':' + minute

 

2018 카카오 블라인드 1차 - 4번

1. timetable의 crew들의 도착시간을 분으로 바꾼다(get_time) 이후,  sort()

2. bus의 도착시간도 분으로 바꾼다(get_bus_time)

3. my_time을 항상 bus로 시작을 하고, 만약 승객이 마지막 손님이면 그 손님의 시간 -1 을 my_time으로 설정

4. my_time을 string으로 바꿔준다(change_time) 이후, return