https://programmers.co.kr/learn/courses/30/lessons/92341
주어진 조건대로 구현하면 되는 전형적인 구현 문제다 dict를 활용하여 풀었다.
00:00 입차하는 경우를 처리하기 위해 defaultdict를 -1로 초기화해줬다
나의 풀이
from collections import defaultdict
import math
def solution(fees, records):
car_acc_time = defaultdict(int)
car_time = defaultdict(lambda : -1)
car_fee = {}
for record in records:
timer, num, action = record.split()
hh,mm = map(int,timer.split(':'))
if action == 'IN':
car_time[num] = hh*60+mm
else:
car_acc_time[num] += (hh*60+mm - car_time[num])
car_time[num] = -1
basicTime, basicFee, unitTime, unitFee = fees
for num in car_time.keys():
if car_time[num] != -1:
# 아직 출차가 안되어있다면
car_acc_time[num] += (23*60+59 - car_time[num])
if basicTime >= car_acc_time[num]:
car_fee[num] = basicFee
else:
car_fee[num] = basicFee + math.ceil((car_acc_time[num] - basicTime)/unitTime)*unitFee
answer = []
for key,value in sorted(car_fee.items(), key = lambda x : x[0]):
answer.append(value)
return answer
'Programming > Programmers' 카테고리의 다른 글
[프로그래머스] 파괴되지 않은 건물(Python) (0) | 2022.01.30 |
---|---|
[프로그래머스] 양과 늑대(Python) (0) | 2022.01.28 |
[프로그래머스] 양궁대회 (Python) (0) | 2022.01.23 |
[프로그래머스] k진수에서 소수 개수 구하기 (Python) (0) | 2022.01.19 |
[프로그래머스] 신고 결과 받기 (Python) (0) | 2022.01.19 |
댓글