https://school.programmers.co.kr/learn/courses/30/lessons/92341
나의 풀이
.
딕셔너리를 이용해 차량 번호에 이용 시간에 따른 주차 요금을 누적시키면 될 것이라고 생각하였다. 하지만 한 차량이 여러 번 주차를 할 경우 IN, OUT 상태에 따른 구분을 하는 것에 어려움이 있었다.
모범 답안
import math
def solution(fees, records):
check = {}
for record in records:
time, number, status = record.split()
time = time.split(':')
time = int(time[0])*60 + int(time[1])
if number not in check:
check[number] = (0, time, status)
if status == 'IN':
check[number] = (check[number][0], time, status)
print(check)
elif status == 'OUT':
total_time, in_time, _ = check[number]
total_time += time - in_time
check[number] = (total_time, time, status)
result = {}
for number in check.keys():
total_time, time, status = check[number]
if status == 'IN':
total_time += 1439 - time
fee = fees[1]
if total_time <= fees[0]:
result[number] = fee
else:
fee = fee + math.ceil((total_time - fees[0]) / fees[2]) * fees[-1]
result[number] = fee
return list(map(lambda x : x[1], sorted(result.items())))
'코딩테스트 > programmers (python)' 카테고리의 다른 글
Programmers / 해시 문제 모음 (0) | 2024.03.09 |
---|---|
Programmers / DFS / BFS 문제 모음 (0) | 2024.03.08 |
Programmers / 2단계 / 방문 길이 / python (1) | 2024.03.06 |
Programmers / 2단계 / [3차] n진수 게임 / python / 2018 KAKAO BLIND RECRUITMENT (1) | 2024.03.05 |
Programmers / 2단계 / 다리를 지나는 트럭 / python (0) | 2024.02.24 |