선택은 나의 것

[프로그래머스] 셔틀버스 (python) 본문

☽ Algorithm/Programmers

[프로그래머스] 셔틀버스 (python)

Algoribi 2020. 5. 22. 12:42

문제

Programmers 2018 KAKAO BLIND RECRUITMENT : [1차] 셔틀버스

 

코딩테스트 연습 - [1차] 셔틀버스

10 60 45 [23:59,23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59] 18:00

programmers.co.kr

접근

어려운 문제는 아니지만, 문자열 처리가 까다로우므로 python을 이용해 풀었다. 

지난 [SWEA] 7732 시간 개념 문제에서도 말했듯이 시간과 관련된 문제는 비교하기 편하게 가장 작은 단위-이 문제에서는 분(minute)-로 환산해 주는 것이 편하다.

(minute)으로 환산한 시간 정보를 timetable이라는 배열에 저장해주었다. 그리고 먼저 오는 사람 순서대로 셔틀버스를 탈 수 있기 때문에 정렬해주었다.

이제 셔틀버스의 운행 횟수(n)만큼 for문을 돌면서 콘이 탈 수 있는 제일 늦은 시간을 구해주면 된다.

 

코드

def solution(n, t, m, timetable):
    answer = ""
    timetable = [int(time[:2]) * 60 + int(time[3:5]) for time in timetable]

    timetable.sort()

    last_bus_time = 540 + (n - 1) * t
    for i in range(n):
        if len(timetable) < m:
            answer = "%02d:%02d" % (last_bus_time // 60, last_bus_time % 60)
            break
        if i == n - 1:
            if timetable[0] > last_bus_time:
                answer = "%02d:%02d" % (
                    last_bus_time // 60, last_bus_time % 60)
                break
            time = timetable[m - 1] - 1
            answer = "%02d:%02d" % (time // 60, time % 60)
        arrive_bus_time = 540 + i * t
        for j in range(m - 1, -1, -1):
            if timetable[j] <= arrive_bus_time:
                del timetable[j]
    return answer

 

깃 허브 주소 : https://github.com/algoribi/algorithm-study

Comments