https://programmers.co.kr/learn/courses/30/lessons/92341
✅ Solution
- defaultdict을 이용하여 차량별로 입/출차 내역을 저장해둔다.
- 그리고 defaultdict, infos의 키를 확인하면서 주차 요금을 계산해준다.
- 만약 해당 키 값이 홀수라면 마지막 출차 기록이 없다는 의미로 23:59에 출차된 것으로 간주하여 계산한다.
- 만약 해당 키 값이 짝수라면 출차-입차 시간으로 계산한다.
- 차량 번호와 요금을 answer에 넣은 뒤, 차량 번호로 정렬하여 요금을 리턴한다.
✅ Code
import math
from collections import defaultdict
def solution(fees, records):
answer = []
infos = defaultdict(list)
for record in records:
time, number, history = record.split()
infos[number].append(time)
for key in infos.keys():
total = 0
for i in range(0, len(infos[key]), 2):
if i + 1 < len(infos[key]):
time = (int(infos[key][i + 1].split(":")[0]) * 60 + int(infos[key][i + 1].split(":")[1])) - (
int(infos[key][i].split(":")[0]) * 60 + int(infos[key][i].split(":")[1]))
total += time
else:
time = 1439 - (int(infos[key][i].split(":")[0]) * 60 + int(infos[key][i].split(":")[1]))
total += time
if total < fees[0]:
answer.append((key, fees[1]))
else:
fee = math.ceil((total - fees[0]) / fees[2]) * fees[3]
answer.append((key, fees[1] + fee))
answer = sorted(answer, key=lambda x: x[0])
return [x[1] for x in answer]
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Level 2 - 타겟 넘버 (Python) (0) | 2022.06.04 |
---|---|
[프로그래머스] Level 2 - 더 맵게 (Python) (0) | 2022.06.03 |
[프로그래머스] Level 2 - 양궁대회 (Python) (2) | 2022.05.24 |
[프로그래머스] Level 2 - [3차] 압축 (Python) (0) | 2022.05.20 |
[프로그래머스] Level 2 - [3차] 방금그곡 (Python) (0) | 2022.05.18 |