여름의 서재
[프로그래머스] 주차 요금 계산 (파이썬) 본문
728x90
📕 문제
https://programmers.co.kr/learn/courses/30/lessons/92341
💡 풀이법
1. 차의 입차 시간과 담을 cars 딕셔너리를 만든다.
2. 차들의 총 주차 시간을 담을 total 딕셔너리를 만든다.
3. records를 돌면서 cars에 입차 시간 을 담고 출차를 하면 출차시간에서 딕셔너리에 저장된 입차시간을 빼서 total에 추가한다. (출차를 할때는 cars에 저장된 입차 시간을 없애준다.)
4. records를 다 돌고도 cars에 입차 시간이 남아있으면 23:59분에 출차한 것으로 간주한다고 했으므로 한번 더 계산해준다.
5. total을 돌면서 주차 시간으로 주차 요금을 계산한다.
from collections import defaultdict
import math
def solution(fees, records):
basic_time, basic_fee, unit_time, unit_fee = fees
cars = {}
total = defaultdict(int)
for rec in records:
time, car, state = rec.split()
if state == 'IN':
cars[car] = time
else:
out_h, out_m = map(int, time.split(':'))
in_h, in_m = map(int, cars[car].split(':'))
total[car] += (out_h * 60 + out_m) - (in_h * 60 + in_m)
del cars[car]
for car, time in cars.items():
in_h, in_m = map(int, time.split(':'))
total[car] += 1439 - (in_h * 60 + in_m)
for car, time in total.items():
if time <= basic_time:
total[car] = basic_fee
else:
fee = basic_fee + math.ceil((time - basic_time)/unit_time) * unit_fee
total[car] = fee
answer = [value for key, value in sorted(total.items(), key=lambda x : x[0])]
return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 광고 삽입 (Python) (0) | 2022.02.27 |
---|---|
[프로그래머스] 징검다리 건너기 (Python) (0) | 2022.02.27 |
[프로그래머스] 게임 맵 최단거리 (파이썬) (0) | 2022.02.06 |
[프로그래머스] 2 x n 타일링 (파이썬) (0) | 2022.02.06 |
[프로그래머스] 합승택시요금 (파이썬) (0) | 2022.02.06 |
Comments