Programmers Level.2 주차 요금 계산
import math
def solution(fees, records):
default_time, default_cost, unit_time, unit_cost = fees # 기본시간, 기본요금, 단위시간, 단위요금
array1 = dict() # 차량번호, 누적 시간
array2 = dict() # 차량번호, 입차 시각
for record in records:
time, num, action = record.split() # 시간, 차량번호, 내역
time = int(time[0:2]) * 60 + int(time[3:])
num = int(num)
if num not in array1.keys():
array1[num] = 0
if action == 'IN':
array2[num] = time
if action == 'OUT':
array1[num] += time - array2[num]
del(array2[num])
if array2: # 출차하지 않은 차량이 있는 경우
for i in array2.keys():
array1[i] += 23 * 60 + 59 - array2[i]
array1 = list(array1.items())
array1 = sorted(array1) # 차량 번호 순으로 정렬
answer = []
for a in array1:
if a[1] <= default_time: # 기본 시간 이하일 경우
answer.append(default_cost)
else: # 기본 시간 초과일 경우
answer.append(default_cost + math.ceil((a[1] - default_time)/unit_time) * unit_cost)
return answer
- 누적 시간을 담는 dict 자료형과 입차 시각을 담는 dict 자료형, 두 가지를 사용했다.
- 그래야만 출차되지 않은 차량을 계산할 수 있다고 생각.
- 차량 번호 순으로 정렬하기 위해 dict자료형을 list로 바꾼 후 list[0]을 기준으로 오름차순 정렬
'알고리즘 문제 풀이 > Programmers' 카테고리의 다른 글
[23회차] n^2 배열 자르기 (0) | 2022.01.13 |
---|---|
[22회차] 파일명 정렬 (0) | 2022.01.11 |
[21회차] 프렌즈 4블록 (0) | 2022.01.04 |
[20회차] 영어 끝말잇기 (0) | 2021.12.31 |
[19회차] 후보키, 2개 이하로 다른 비트 (0) | 2021.12.29 |
댓글