반응형
알고리즘 고득점 Kit 풀이중 ..
from collections import deque
def solution(bridge_length, weight, truck_weights):
answer = 0
on_bridge_w = 0
# 대기 큐
q = deque(truck_weights)
# 다리
b = deque()
# 현재 시각
sec = 0
while q:
# 대기 큐에서 트럭 pop
t_w = q.popleft()
# 다리 위에 차 있는 경우 제일 먼저 진입한 차량을 다리 길이만큼 움직였는지 확인.
# w는 무게, s는 출발 시각
if len(b):
w, s = b.popleft()
if sec - s != bridge_length:
b.appendleft((w,s))
else:
on_bridge_w -= w
# 다리에 차가 꽉 찬 경우(대기하기)
if len(b) == bridge_length:
q.appendleft(t_w)
sec += 1
continue
# 차가 진입 가능한 경우
if on_bridge_w + t_w <= weight:
b.append((t_w, sec))
# 다리 위의 트럭 무게 합
on_bridge_w += t_w
# 진입 불가한 경우
else:
q.appendleft(t_w)
sec += 1
# 마지막에 대기 트럭은 없고 다리 건너는 트럭 존재하는 경우 시간 카운트 해주기
while len(b):
w, s = b.popleft()
if sec - s != bridge_length:
b.appendleft((w,s))
else:
on_bridge_w -= w
sec += 1
return sec
반응형
'개발 > 알고리즘' 카테고리의 다른 글
[프로그래머스] 더 맵게 (0) | 2022.03.02 |
---|---|
[프로그래머스] 주식가격 (0) | 2022.03.02 |
[프로그래머스] 프린터 (0) | 2022.02.28 |
[프로그래머스] 기능개발 (0) | 2022.02.28 |