https://school.programmers.co.kr/learn/courses/30/lessons/17678
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
✅ Solution
- hh:mm 형식으로 된 timetable을 모두 분으로 나타내 주고, 내림차순 정렬한다.
- n회 t분 간격으로 셔틀버스가 운영되므로 n번 반복문을 돌면서 셔틀버스 오는 시간에 탈 수 있는 인원을 지운다.
- timetable의 길이가 1 이상이고, 셔틀버스 도착시간보다 일찍 혹은 같은 시간에 대기했으며 이미 탄 인원이 m명 이하일 때 태운다.
- 콘은 무사히 사무실에 도착해야 하므로 가장 마지막 셔틀버스에 탑승해야 만한다.
- 만약 마지막 셔틀버스의 탑승인원이 m명보다 작다면 해당 버스에 탈 수 있으므로 그 버스의 도착시간이 콘의 가장 늦은 도착시간이다.
- 하지만 이미 마지막 셔틀버스에 인원이 꽉 찼다면 가장 마지막 탑승한 크루보다 빨리 도착하여 콘이 탑승해야 하므로 가장 마지막 탑승한 크루의 도착시간 - 1분이 콘의 가장 늦은 도착시간이다.
✅ Code
def solution(n, t, m, timetable):
timetable = sorted(timetable, reverse=True)
timetable = [int(time[:2]) * 60 + int(time[3:]) for time in timetable]
for i in range(n):
arriveTime = 540 + i * t
cnt = 0
while timetable:
if timetable[-1] > arriveTime or cnt >= m:
break
lastTime = timetable[-1]
timetable.pop()
cnt += 1
if not timetable:
if cnt < m:
answer = arriveTime
else:
answer = lastTime - 1
return '%02d:%02d' % (answer // 60, answer % 60)
if i == n - 1:
if cnt < m:
answer = arriveTime
else:
answer = lastTime - 1
return '%02d:%02d' % (answer // 60, answer % 60)
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Level 3 - 불량 사용자 (Python) (0) | 2022.07.07 |
---|---|
[프로그래머스] Level 3 - 표 편집 (Python) (0) | 2022.07.07 |
[프로그래머스] Level 3 - [1차] 추석 트래픽 (Python) (0) | 2022.07.02 |
[프로그래머스] Level 2 - N개의 최소공배수 (Python) (0) | 2022.06.30 |
[프로그래머스] Level 2 - N-Queen (Python) (0) | 2022.06.30 |