Algorithm/프로그래머스
[프로그래머스] [1차] 셔틀버스 - Python
자흐니
2022. 2. 13. 19:32
🤔 문제
https://programmers.co.kr/learn/courses/30/lessons/17678
😀 풀이
본 문제의 핵심은 콘이 마지막 버스에 가장 늦게 탑승해야 한다는 것입니다. 출근자들을 순서대로 버스에 태워 보낸다고 생각하고 마지막 버스에 자리가 남는다면 마지막 버스 출발시간에 도착하면 되고 마지막 버스가 다 차있다면 마지막 버스에 마지막 도착 사람보다 1분 빠르게 도착하면 됩니다. 그에 맞게 구현하면 정답을 낼 수 있습니다.
💻 풀이 코드는 아래와 같습니다.
def timeToMinute(time):
h, m = map(int, time.split(":"))
return h * 60 + m
def minuteToTime(minute):
time = ''
h, m = divmod(minute, 60)
time += str(h) if h >= 10 else '0' + str(h)
time += ':'
time += str(m) if m >= 10 else '0' + str(m)
return time
def solution(n, t, m, timetable):
timeDict = dict()
busTime = [timeToMinute("9:00") + i * t for i in range(n)]
timetable.sort(reverse=True)
for time in busTime:
timeDict[time] = []
for _ in range(n * m):
if not timetable:
break
person = timeToMinute(timetable.pop())
for time in busTime:
if (person <= time) and len(timeDict[time]) < m:
timeDict[time].append(person)
break
if len(timeDict[busTime[-1]]) < m:
return minuteToTime(busTime[-1])
return minuteToTime(timeDict[busTime[-1]][-1] - 1)
반응형