✍️ 나의 풀이
- 내 힘으로 풀진 못했다.
- 문법적으로 부족했고
리스트(deque)를 미리 0을 채워놓는
발상을 하지 못했다.
deque
나 queue
를 쓴 이유는 list의 앞 요소를 빼면 굉장한 비효율이기 때문이다.
- 다리에 무게가 0인 트럭이 있는 것처럼 0으로 데크를 채워둔다.
- 시간은 매 반복마다
+
를 해준다. 그때 마다 빠져나오는 데크의 값도 현재 무게에서 빼준다.
- 현재 무게와 다음 트럭의 무게의 합이 최대 무게를 넘지 않으면 다리 진입
- 다리 진입 -> 트럭 무게 추가 , 데크에 추가, 트럭 대기 리스트 삭제
- 이 과정을 트럭 대기 리스트가 없어질 때 까지 반복
🛠 나의 코드
from queue import Queue
from collections import deque
def solution(bridge_length, weight, truck_weights):
answer = 0
curr_weight = 0
truck_weights.reverse()
q = deque()
for i in range(bridge_length):
q.appendleft(0)
while len(q) != 0:
answer += 1
curr_weight -= q.pop()
if len(truck_weights) != 0:
if curr_weight + truck_weights[-1] <= weight:
curr_weight += truck_weights[-1]
q.appendleft(truck_weights.pop())
else:
q.appendleft(0)
return answer
📝 정리
c++
에서 python
으로 푼 지가 얼마 안되서 문법적으로 헷갈리는 부분이 정말 많다.
deque
와 queue
에 대한 학습이 필요할 것 같다.