강신규
프로그래머스 주차 요금 계산 2022 KAKAO BLIND RECRUITMENT 본문
문제 설명 :
주차장의 요금표와 차량이 들어오고(입차) 나간(출차) 기록이 주어졌을 때, 차량별로 주차 요금을 계산하려고 합니다. 아래는 하나의 예시를 나타냅니다.


주차 요금을 나타내는 정수 배열 fees, 자동차의 입/출차 내역을 나타내는 문자열 배열 records 가 매개변수로 주어집니다. 차량 번호가 작은 자동차부터 청구할 주차 요금을 차례대로 정수배열에 담아서 return 하도록 solution 함수를 완성해주세요
시간 요금 단위시간 단위요금을 fees로부터 각각 집어넣어준후
records 안에있는 요소를 하나하나 split 하여 (time) (number) (IN or OUT) 판단
차량번호가 딕셔너리에 존재하는지 아닌지 판단 존재하면은 IN 부터 OUT 까지 시간 저장
그후 딕셔너리에 존재하는 IN OUT 시간계산을 통하여 주차요금을 계산합니다.
import math
def hourToMinutes(hours):
h, m = map(int , hours.split(":"))
return h*60+m
def solution(fees, records):
answer = []
dic = dict()
#기본시간, 기본요금, 단위시간, 단위요금
dt, df, ut, uf = fees
for r in records:
time, number, InOut = r.split()
# print(time,number,InOut)
number = int(number)
if number in dic:
dic[number].append([hourToMinutes(time), InOut])
else:
dic[number] = [[hourToMinutes(time), InOut]]
myList = sorted(dic.items())
# print(myList)
for r in myList:
t=0
print(r)
for rr in r[1]:
if(rr[1] == "IN"):
t -= rr[0]
elif(rr[1]=="OUT"):
t += rr[0]
if r[1][-1][1] =="IN":
t += hourToMinutes("23:59")
if t<= dt:
answer.append(df)
else:
answer.append(df+math.ceil((t-dt)/ut)*uf)
return answer
'공부 > 코딩테스트준비' 카테고리의 다른 글
[2023 KAKAO BLIND RECRUITMENT] 1. 개인정보 수집 유효기간 (0) | 2023.06.23 |
---|---|
[백준] Swift 캠핑 4796번 - [그리디] (0) | 2023.05.18 |
프로그래머스 숫자 문자열과 영단어 (0) | 2022.10.27 |
프로그래머스 음양 더하기 (0) | 2022.10.27 |
프로그래머스 음양 더하기 (0) | 2022.10.04 |