본문 바로가기

파이썬

[프로그래머스 파이썬] 주차 요금 계산

https://programmers.co.kr/learn/courses/30/lessons/92341

 

코딩테스트 연습 - 주차 요금 계산

[180, 5000, 10, 600] ["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"] [14600, 34400, 5000]

programmers.co.kr

 

<풀이>

from collections import deque
import math

def solution(fees, records):
    answer = []
    cars = []
    for record in records:
        car_number = record[6:10]
        if car_number not in cars:
            cars.append(record[6:10])        
            
    cars.sort()
    
    for car in cars:
        tmp = []
        used_time = 0 # 사용시간
        
        for record in records:
            if car == record[6:10] and record[11] == "I": # 입차일 경우
                tmp.append((int(record[0:2]), int(record[3:5])))
                
            elif car == record[6:10] and record[11] == "O": # 출차일 경우
                h, m = tmp.pop()
                used_time += (int(record[0:2])-h)*60 + (int(record[3:5])-m)
                
        # 입차가 남은 경우
        if tmp:
            h, m = tmp.pop()
            used_time += (23-h)*60 + (59-m)
            
        if used_time <= fees[0]:
            answer.append(fees[1])
            
        elif used_time > fees[0]: # 기본시간보다 많이 이용했으면 기본요금 + (사용시간-기본시간)/단위시간 * 단위요금
            answer.append(fees[1]+ math.ceil((used_time - fees[0])/fees[2])*fees[3] )
    

    return answer

 

'파이썬' 카테고리의 다른 글

[백준 파이썬] 1504 특정한 최단 경로  (0) 2022.06.22
[백준 파이썬] 14502번 연구소  (0) 2022.06.20
[백준 파이썬] 7569번 토마토  (0) 2022.06.15
[백준] 11404 플로이드  (0) 2022.06.15
[백준] 7576번 토마토  (0) 2022.06.13