[Boj문제풀이]

[Boj/백준] 5464 Python

ki7348 2021. 9. 11. 12:05

문제 출처: https://www.acmicpc.net/problem/5464

 

5464번: 주차장

시내 주차장은 1부터 N까지 번호가 매겨진 N개의 주차 공간을 가지고 있다. 이 주차장은 매일 아침 모든 주차 공간이 비어 있는 상태에서 영업을 시작하며, 하룻동안 다음과 같은 방식으로 운영

www.acmicpc.net

 

 

1. 문제 접근 방식

들어오는 차량의 값이 양수이면 use라는 리스트에 하나씩 넣고 만약에 자리가 없다면 대기 덱에 삽입한다.

들어오는 차량의 값이 음수라면 해당 use 리스트 값을 0으로 초기화 시킨다. 만약 대기 덱에 원소가 존재할 때에는 use리스트에 해당 덱 원소를 삽입한다.

 

 

2. 내가 푼 코드

import sys
from collections import deque

n, m = map(int,sys.stdin.readline().split())

spot = deque()
weight = deque()
wait = deque()
use = [0] * n
total = 0

for i in range(n):
    spot.append(int(sys.stdin.readline().strip()))
for i in range(m):
    weight.append(int(sys.stdin.readline().strip()))   
for i in range(m*2):
    car = int(sys.stdin.readline().strip())
    if car > 0:
        if 0 in use:
            for j in range(n):
                if use[j] == 0:
                    use[j] = car
                    break
        else:
            wait.append(car)
    else:
        a = use.index(-car)
        use[a] = 0
        total+=weight[-car-1]*spot[a]
        if wait:
            use[a] = wait.popleft()



print(total)

 

 

3. 결과 및 느낀점

테스트 케이스가 적은 문제에는 시간 복잡도 높은 함수를 필요할땐 사용해도 괜찮을거 같다.

'[Boj문제풀이]' 카테고리의 다른 글

[Boj/백준] 15903 Python  (0) 2021.09.14
[Boj/백준] 1927 11279 11286 Python  (0) 2021.09.13
[Boj/백준] 18115 Python  (0) 2021.09.10
[Boj/백준] 13417 Python  (0) 2021.09.08
[Boj/백준] 15828 Python  (0) 2021.09.07