문제
https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=python3
설계
- bucket 활용
- 00분에 입차할 경우 정확한 시간을 측정하기 위해 car 초기 값을 -1로 설정
- 올림을 위해 math.ceil() 사용
# fees = [기본 시간(분), 기본 요금(원), 단위 시간(분), 단위 요금(원)]
import math
def solution(fees, records):
car = [-1] * 10000
time = [0] * 10000
# 입출차 기록 확인
for record in records:
if record[11:] == "IN":
car[int(record[6:10])] = int(record[0:2]) * 60 + int(record[3:5])
elif record[11:] == "OUT":
time[int(record[6:10])] += int(record[0:2]) * 60 + int(record[3:5]) - car[int(record[6:10])]
car[int(record[6:10])] = -1
# 출차하지 않은 차량 확인
for i in range(10000):
if car[i] >= 0:
time[i] += 1439 - car[i] # 1439 : 23:59 -> 60분 환산
# 총 주차 시간 추출
totals = []
for i in range(10000):
if time[i] > 0:
totals.append(time[i])
answer = []
for total in totals:
if total <= fees[0]: # 기본시간일 경우
answer.append(int(fees[1])) # 기본 요금
elif total > fees[0]:
answer.append(int(fees[1] + math.ceil((total - fees[0]) / fees[2]) * fees[3]))
return answer
'PS (Problem Solving) > Programmers' 카테고리의 다른 글
[프로그래머스] 최댓값과 최솟값 (0) | 2022.10.13 |
---|---|
[프로그래머스] k진수에서 소수 개수 구하기 (0) | 2022.09.27 |
[프로그래머스] 두 큐 합 같게 만들기 (0) | 2022.09.13 |
[프로그래머스] 게임 맵 최단거리 (0) | 2022.08.24 |
[프로그래머스] 성격 유형 검사하기 (0) | 2022.08.23 |