728x90
https://programmers.co.kr/learn/courses/30/lessons/92341
- 생각
- 요금을 일괄 계산!!
- 차량번호가 작은 순으로 요금 return
- 차량 번호가 작은 순으로 + 시간 순으로 정렬
- 차가 들어오거나 나가는 시간 배열로 만들기
- 차량 주차 시간 구하기
- 요금 구하기
- 코드
import math
# hh:mm을 minutes로 바꾸기
def changeToMinutes(time):
H,M = map(int,time.split(':'))
return H*60 + M
def solution(fees, records):
# 차량 번호가 작은 자동차부터
records.sort(key = lambda x:x[6:10])
# 차 번호에 [time]
cars = {}
for record in records:
time, car_num, inout = record.split()
time_minutes = changeToMinutes(time)
# 들어온 적 없는 차량?
if car_num not in cars:
cars[car_num] = [time_minutes]
else:
cars[car_num].append(time_minutes)
park_time = []
last_time = 23*60 + 59
# 차량 주차 시간 구하기
for car in cars.values():
parking_time = 0
for i in range(0,len(car),2):
try:
parking_time += car[i+1]-car[i]
# 그날 출차 되지 않았다면
except:
parking_time += last_time - car[i]
park_time += [parking_time]
money = []
# 주차 요금 계산
for m in park_time:
# 기본 시간보다 적게 이용시 기본요금만
if m <= fees[0]:
money += [fees[1]]
else:
money += [fees[1] + math.ceil((m-fees[0])/fees[2])*fees[3]]
return money
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[백준] 2805. 나무 자르기 - Python (0) | 2022.06.17 |
---|---|
[프로그래머스] Lv.2 양궁대회 - Python (0) | 2022.06.16 |
[백준] 11404. 플로이드 - Python (0) | 2022.06.15 |
[백준] 7569. 토마토 - Python (0) | 2022.06.15 |
[백준] 7576. 토마토 - Python (0) | 2022.06.13 |
댓글