Notice
Recent Posts
Recent Comments
Link
나의 개발일지
[프로그래머스] Lv.3 [1차] 셔틀버스 [Python, 파이썬] KAKAO 본문
- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/17678
- 🔑 마지막 운행 셔틀
- 마지막 운행 셔틀에 자리가 남으면?
- 마지막 운행 시간에 맞춰서 오기
- 자리가 있다면 제일 마지막 시간에 딱 맞춰가도 탈 수 있기 때문
- 마지막 운행 셔틀에 자리가 없으면?
- 제일 마지막에 도착한 사람보다 1분 일찍 오기
- 이 버스를 놓치면 회사 못 간다. 무조건 마지막에 도착한 사람보다 1분 일찍 와서 기다리자
- 마지막 운행 셔틀에 자리가 남으면?
def solution(n, t, m, timetable):
start_time = 540 # 첫 셔틀 시간
end_time = 540 + (n - 1) * t # 마지막 셔틀 도착 시간
for i in range(len(timetable)): # 시간 분으로 바꾸기
hour, minute = map(int, timetable[i].split(':'))
timetable[i] = hour * 60 + minute
timetable.sort() # 온 순서대로 정렬
cnt = 0 # 셔틀에 탄 전체 사람 수
for i in range(n):
tmp = 0 # 한 셔틀에 탄 사람 수
for j in range(cnt, len(timetable)):
if start_time >= timetable[j]: # 탈 수 있는 사람이면
tmp += 1 # 셔틀에 태우고
cnt += 1 # 전체 수 증가
last = timetable[j] # 마지막에 탄 시간 업데이트
if tmp == m: # 한 셔틀에 더 이상 못타면 멈춰
break
start_time += t # 다음 셔틀 시간으로 변경
if tmp < m: # 마지막 버스에 자리가 있으면, 마지막 셔틀 도착 시간에 탑승
hour = str(end_time // 60).zfill(2)
minute = str(end_time % 60).zfill(2)
return hour + ':' + minute
else: # 자리가 없으면, 마지막에 온 사람보다 1분 일찍와라
hour = str((last-1) // 60).zfill(2)
minute = str((last-1) % 60).zfill(2)
return hour + ':' + minute
'프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.2 전력망을 둘로 나누기 [Python, 파이썬] (0) | 2023.10.29 |
---|---|
[프로그래머스] Lv.2 쿼드압축 후 개수 세기 [Python, 파이썬] (1) | 2023.10.23 |
[프로그래머스] Lv.1 개인정보 수집 유효기간 [Python, 파이썬] KAKAO (0) | 2023.10.15 |
[프로그래머스] Lv.3 합승 택시 요금 [Python, 파이썬] KAKAO (2) | 2023.10.14 |
[프로그래머스] Lv.2 문자열 압축 [Python, 파이썬] KAKAO (0) | 2023.10.14 |
Comments