-
[2018 KAKAO BLIND RECRUITMENT] 셔틀버스알고리즘/프로그래머스 2023. 8. 11. 13:39
https://school.programmers.co.kr/learn/courses/30/lessons/17678
- 코드
from collections import defaultdict def solution(n, t, m, timetable): # 요소들은 분 으로 변환 tt = sorted(list(map(lambda x : convert(x), timetable))) table = defaultdict(int) # 셔틀이 오는 시각 구하기 shuttle = [540+i*t for i in range(n)] t_idx = 0 pre_table = 0 for i in range(0, 1440): # 남아있는 사람 수 table[i] = pre_table # 셔틀을 기다리는 사람 수 추가 while t_idx < len(tt) and tt[t_idx] <= i: table[i] += 1 t_idx += 1 if i in shuttle: pre_table = 0 if table[i] < m else table[i] - m else: pre_table = table[i] # 퇴근 가능한 시간 able = [] for i in range(0, 1440): # 마지막 셔틀 도착 시각 이후이면 break if i > shuttle[-1]: break # 기다리는 사람 수가 한번에 탑승 가능한 인원 수 보다 작거나, # 남은 퇴근가능인원(남은 셔틀 개수 * 한번에 탑승 가능한 인원) 보다 작으면 append if table[i] < m or table[i] < m*len([k for k in shuttle if k >= i]): able.append(i) return convert2(max(able)) # str to int def convert(_t): return int(_t[0:2])*60 + int(_t[3:5]) # int to str def convert2(_t): result = '' a = str(_t // 60) result += ('0' + a) if len(a) == 1 else a result += ':' b = str(_t % 60) result += ('0' + b) if len(b) == 1 else b return result
1. "09:00" 과 같이 주어지는 시간에 대해 정수형 분으로 변환 혹은 그 반대의 함수 정의
- convert(_t) : 09:00 > 540
- convert(_t) : 540 > 09:00
2. 구현 (0~1440 분)
3. 콘이 퇴근 가능한 시각을 모두 구하고 max 값 반환
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[2022 KAKAO TECH INTERNSHIP] 두 큐 합 같게 만들기 (1) 2023.11.12 [2022 KAKAO TECH INTERNSHIP] 성격 유형 검사 (1) 2023.11.12 [Python] 에어컨 (2) 2023.07.28 [Python] 상담원 인원 (1) 2023.07.23 [2022 KAKAO BLIND RECRUITMENT] 주차 요금 계산 (0) 2022.08.24