-
[Python] 프로그래머스 / 2018 KAKAO BLIND RECRUITMENT / [1차] 셔틀버스코딩테스트 2024. 9. 19. 15:28
반환형식
생각보다는 까다로운 반환 형식...
"09:41" → 581
"10:11" → 611
뭐 이런 식으로 시간 string을 60*hh + mm 해서 int로 바꾸는 건 쉬운데, 사실 그 역과정이 꽤나 복잡하다. "9:41"이 아니라 "09:41"을 반환해야 하기 때문이다. 이럴 때 파이썬 포맷팅을 쓰면 쉽다.
f"{5:02d}" # 결과: "05"
정답코드
이 문제를 어렵게 생각할 필요는 없다. 결국 이 문제는 어느 게으른 직원이 "가장 마지막 셔틀"의 "가장 마지막 좌석"에 타고 싶어 하는 것이기 때문이다. 탐색조차도 불요하다.
from collections import deque def solution(n, t, m, timetable): # 셔틀 운행 횟수 n, 셔틀 운행 간격 t, 한 셔틀에 탈 수 있는 최대 크루 수 m timetable_int = deque(sorted([time_str_to_int(hhmm) for hhmm in timetable])) # 셔틀 시간 설정 (첫 셔틀 09:00부터 시작) shuttle_time = 540 # 각 셔틀에 탑승할 수 있는 시간을 탐색 for shuttle in range(n): # 현재 셔틀 시간에 탑승할 수 있는 크루 수를 셈 count = 0 while count < m and timetable_int and timetable_int[0] <= shuttle_time: current_ppl_arrvived_on = timetable_int.popleft() # 현재 셔틀에 탑승한 크루는 리스트에서 제거 count += 1 # 마지막 셔틀에 도착한 경우 if shuttle == n - 1: # 정원이 다 찬 경우, 마지막 탑승한 사람보다 1분 빨리 타야 함 if count == m: return f"{(current_ppl_arrvived_on-1)//60:02d}:{(current_ppl_arrvived_on-1)%60:02d}" # 정원이 안 찬 경우, 셔틀 시간에 맞춰 타면 됨 else: return f"{shuttle_time//60:02d}:{shuttle_time%60:02d}" shuttle_time += t def time_str_to_int(hhmm): hh = int(hhmm[:2]) mm = int(hhmm[3:]) return 60 * hh + mm
'코딩테스트' 카테고리의 다른 글
[Python] 프로그래머스 / Summer/Winter Coding / 쿠키 구입 (2) 2024.09.19 [Python] 프로그래머스 / 2018 KAKAO BLIND RECRUITMENT / [1차] 추석 트래픽 (6) 2024.09.19 [Python] 프로그래머스 / 아이템 줍기 (0) 2024.09.19 [Python] 프로그래머스 / 순위 (2) 2024.09.17 [Python] 프로그래머스 / 섬 연결하기 (1) 2024.09.17