https://programmers.co.kr/learn/courses/30/lessons/92341
코딩테스트 연습 - 주차 요금 계산
[180, 5000, 10, 600] ["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"] [14600, 34400, 5000]
programmers.co.kr
<풀이>
from collections import deque
import math
def solution(fees, records):
answer = []
cars = []
for record in records:
car_number = record[6:10]
if car_number not in cars:
cars.append(record[6:10])
cars.sort()
for car in cars:
tmp = []
used_time = 0 # 사용시간
for record in records:
if car == record[6:10] and record[11] == "I": # 입차일 경우
tmp.append((int(record[0:2]), int(record[3:5])))
elif car == record[6:10] and record[11] == "O": # 출차일 경우
h, m = tmp.pop()
used_time += (int(record[0:2])-h)*60 + (int(record[3:5])-m)
# 입차가 남은 경우
if tmp:
h, m = tmp.pop()
used_time += (23-h)*60 + (59-m)
if used_time <= fees[0]:
answer.append(fees[1])
elif used_time > fees[0]: # 기본시간보다 많이 이용했으면 기본요금 + (사용시간-기본시간)/단위시간 * 단위요금
answer.append(fees[1]+ math.ceil((used_time - fees[0])/fees[2])*fees[3] )
return answer
'파이썬' 카테고리의 다른 글
[백준 파이썬] 1504 특정한 최단 경로 (0) | 2022.06.22 |
---|---|
[백준 파이썬] 14502번 연구소 (0) | 2022.06.20 |
[백준 파이썬] 7569번 토마토 (0) | 2022.06.15 |
[백준] 11404 플로이드 (0) | 2022.06.15 |
[백준] 7576번 토마토 (0) | 2022.06.13 |