이 포스팅은 프로그래머스 시리즈 28 편 중 1 번째 글 입니다.
목차
풀이
시뮬레이션 문제이다. 시뮬레이션 문제는 순서를 명확하게 이해하고 이를 지켜주는 것이 매우 중요하다. 항상 집중해서 이부분은 확인할 것
Code
from collections import deque
def solution(bridge_length, weight, truck_weights):
answer = 0
t = 0
bridge_in = 0
truck = deque(truck_weights)
bridge = deque()
while truck or bridge: # 트럭이 남아 있으면
t += 1
# 다리에서 내리기
if bridge: # 다리에 타있으면 먼저 내려
a = bridge.popleft()
bridge_in -= a[0]
if t - a[1] < bridge_length: #들어온 시간이 아직 덜됐으면 다시 태우기
bridge.appendleft(a)
bridge_in += a[0]
# 태우기
if truck:
tr = truck.popleft()
if bridge_in+tr <= weight: # 이미 타있는 것과 지금꺼 추가해서 탈 수 있으면
bridge.append((tr, t)) # 다리 탑승
bridge_in += tr
else: # 탈수 없으면
truck.appendleft(tr) # 원상 복귀
answer = t
return answer