본문 바로가기
백준 & 프로그래머스

프로그래머스.주차 요금 계산.py

by concho 2023. 11. 28.

나중에 class로도 풀어보기

def solution(fees, records):
    answer = []
    # 차량별 정보로 바꾸기
    car_dic, car_time_dic = dict(), dict()
    for rec in records:
        time_str, num, io = rec.split()
        h, m = map(int, time_str.split(':'))
        time = h * 60 + m

        if io == 'IN':
            car_dic[num] = time
        elif io == 'OUT':
            car_dic[num] = time - car_dic[num]
            if num in car_time_dic:
                car_time_dic[num] += car_dic[num]
            else:
                car_time_dic[num] = car_dic[num]
            del car_dic[num]
    
    for c in car_dic:
        car_dic[c] = 1439 - car_dic[c]
        if c in car_time_dic:
            car_time_dic[c] += car_dic[c]
        else:
            car_time_dic[c] = car_dic[c]
    car_fees = dict()
    for car in car_time_dic:
        if car_time_dic[car] <= fees[0]:
            car_fees[car] = fees[1]
        else:
            if (car_time_dic[car] - fees[0])%fees[2] == 0:
                car_fees[car] = fees[1] + ((car_time_dic[car] - fees[0])//fees[2])*fees[3]
            else:
                car_fees[car] = fees[1] + ((car_time_dic[car] - fees[0])//fees[2])*fees[3] + fees[3]

    tm_car = list(car_fees.keys())
    tm_car.sort()
    for c in tm_car:
        answer.append(car_fees[c])

    return answer

if __name__ == '__main__':
    records = ["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"]
    fees = [180, 5000, 10, 600]
    print('ans')
    print(solution(fees, records))

댓글