5464 주차장

정민용·2023년 1월 30일

백준

목록 보기
1/286


5464 주차장 python

# 1. 차가 들어올 때 주차장에 자리가 있다면 주차
# 2. 자리가 없다면 대기소에 추가 -> .insert(0, 차) => pop을 통해 먼저 들어온 차가 먼저 나가도록
# 3. 차가 나갈 때 주차료 계산 후 대기차량 있을시 주차
# n : 주차 공간의 수, m : 차량의 수, Rs : s번째 주차 공간의 단위 무게당 요금, Wk : 차량 k의 무게

n, m = map(int, input().split())
spot_pay = []
# Rs : spot_pay
for _ in range(n):
    spot_pay.append(int(input()))
car_weight = []
# Wk : car_weight
for _ in range(m):
    car_weight.append(int(input()))

total_money = 0
wait = [0] * n
enter = []
for _ in range(2*m):
    what_is_car_number = int(input())
    if what_is_car_number >= 1:
        # 차가 들어온 경우
        if 0 in wait:
            for i in range(n):
                if wait[i] == 0:
                    wait[i] = what_is_car_number
                    break
        else:
            #차가 꽉차서 대기해야합니다
            enter.insert(0, what_is_car_number)
    else:
        # 차가 나간 경우
        my_car_weight = car_weight[-what_is_car_number - 1]
        my_car_enter = wait.index(-what_is_car_number)
        total_money += my_car_weight * spot_pay[my_car_enter]
        wait[my_car_enter] = 0
        if len(enter) != 0:
            # 대기차량 중에서 주차
            wait[my_car_enter] = enter.pop()
            
print(total_money)

0개의 댓글