문제풀이/BOJ

[Python] BOJ/백준 2979번 트럭 주차

서채리 2021. 6. 15. 20:36

[문제]

https://www.acmicpc.net/problem/2979

 

2979번: 트럭 주차

첫째 줄에 문제에서 설명한 주차 요금 A, B, C가 주어진다. (1 ≤ C ≤ B ≤ A ≤ 100) 다음 세 개 줄에는 두 정수가 주어진다. 이 정수는 상근이가 가지고 있는 트럭이 주차장에 도착한 시간과 주차장

www.acmicpc.net



[풀이]

트럭 세 대의 도착시간과 떠난 시간을 table 리스트에 담는다. 그 후 떠난 시간 세 개를 max함수로 비교해 가장 마지막으로 떠난 트럭의 시간을 구해 해당 크기의 리스트 parking을 만들어 모두 0으로 초기화한다.

 

콘솔에 입력한 시간은 1부터 시작하나 리스트의 인덱스는 0부터 시작하기 때문에 도착시간과 떠난 시간 모두 각 값에서 1씩 빼 parking 리스트의 해당 인덱스의 값을 1씩 증가시킨다.

위의 결과로 5초에 차가 세 대 다 있다면 parking[4] = 3, 두대만 있다면 parking[4] = 2 이런 식으로 값이 입력된다.

 

총 주차사용요금을주차 사용요금을 구할 변수 fee를 0으로 초기화한 후 parking 전체를 돌아 값이 1일 경우, 2일 경우, 3일 경우에 맞게 주차요금을 더해주어 총 주차 사용요금을 구한다.

 


[코드]

if __name__ == "__main__":
    one_fee, two_fee, three_fee = map(int, input().split())
    table = [list(map(int, input().split())) for _ in range(3)]
    maxtime = max(table[0][1], table[1][1], table[2][1])
    parking = [0] * (maxtime - 1)

    for car in table:
        for i in range(car[0] - 1, car[1] - 1):
            parking[i] += 1

    fee = 0
    for i in parking:
        if i == 1:
            fee += one_fee
        elif i == 2:
            fee += 2 * two_fee
        elif i == 3:
            fee += 3 * three_fee
    print(fee)