일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 이분탐색
- 카카오
- programmers
- Re
- 위클리 챌린지
- lambda
- BFS
- Set
- python
- heapq
- KAKAO BLIND RECRUITMENT
- Combinations
- Zip
- dfs
- 백준
- 추석맞이 코딩챌린지
- 정렬
- 다익스트라
- 수학
- divmod
- 재귀함수
- 그리디
- 정규식
- 동적 계획법
- 파이썬
- DateTime
- java
- backjoon
- 프로그래머스
- 자바
Archives
- Today
- Total
상상쓰
[프로그래머스] [1차] 셔틀버스 본문
https://programmers.co.kr/learn/courses/30/lessons/17678
busTimetable 은 셔틀 운행 시각을 나타낸다.
busTimetable = ['09:00', '09:00' + (t분 * 1), ..., '09:00' + (t분 * (n-1))]
dictionary 를 이용하여 busTimetable 의 원소 key로 차례대로 timetable 과 비교하여 태울 수 있는 시간대를 value 로 취한다.
즉, 마지막 셔틀 운행 시각의 대기열이 m 보다 작으면 콘은 가장 낮은 시각인 마지막 셔틀 운행 시각에 도착해도 탑승할 수 있다. (answer = busTimetable[-1])
m 이라면 콘은 대기열의 제일 뒤에 서므로 대기열에 가능 늦게 도착하는 시각에서 1분을 뺀 시각을 반환하면 된다.
import datetime
from collections import defaultdict
def solution(n, t, m, timetable):
answer = ''
busTimetable = [(datetime.datetime(2021, 8, 25, 9, 0, 0) + datetime.timedelta(minutes=t*i)).strftime('%H:%M') for i in range(n)]
timetable.sort(reverse=True)
dic = defaultdict(list)
for i in busTimetable:
cnt = 0
while cnt < m and timetable and timetable[-1] <= i:
cnt += 1
dic[i].append(timetable.pop())
if len(dic[busTimetable[-1]]) < m:
answer = busTimetable[-1]
else:
time = dic[busTimetable[-1]][-1]
answer = (datetime.datetime(2021, 8, 25, int(time.split(':')[0]), int(time.split(':')[1]), 0) - datetime.timedelta(minutes=1)).strftime('%H:%M')
return answer
print(solution(1, 1, 5, ['08:00', '08:01', '08:02', '08:03'])) # 09:00
'Coding Test' 카테고리의 다른 글
[프로그래머스] [1차] 프렌즈4블록 (0) | 2021.08.27 |
---|---|
[백준] 부녀회장이 될테야 (0) | 2021.08.27 |
[프로그래머스] 후보키 (0) | 2021.08.24 |
[프로그래머스] [1차] 뉴스 클러스터링 (0) | 2021.08.24 |
[프로그래머스] 4주차_직업군 추천하기 (0) | 2021.08.23 |
Comments