1. 문제
https://www.welcomekakao.com/learn/courses/30/lessons/42583
2. 풀이
- 시뮬레이션으로 문제를 해결하면 됩니다
- 다리 사이즈, 대기 트럭 만큼 deque 생성을 해줍니다.
- 다리를 지나고 있는 트럭이 존재하지 않을 때 까지 while 문을 수행합니다.
- 대기열에 트럭이 있고, 다리를 지나고 있는 트럭이 없는 경우에 해당 숫자는 0으로 채워집니다.
- 시간을 1씩 증가시키면서, 다음 들어올 트럭이 다리에 있는 트럭의 무게의 합과 더하여 무게를 초과하지 않으면 다리에 있는 차에 넣고
- 아닌 경우에는 다리에 들어오지 않은 차로 대기 큐에서 계속 기다리게합니다.
from collections import deque
def solution(bridge_length, weight, truck_weights):
q = deque([0]*bridge_length) # 다리 사이즈 만큼 deque 생성
truck_weights = deque(truck_weights) # 대기 트럭 만큼 deque 생성
sec = 0
q_sum = 0
while q: # 다리를 지나고 있는 트럭이 존재하지 않을 때 까지
sec += 1 # 1씩 증가시켜가면서 시뮬레이션을 동작시킵니다.
q_sum -= q.popleft()
if truck_weights:
front = truck_weights.popleft() # 트럭 중에서 가장 빨리 나가야 하는 대기차의 무게와
if q_sum+front<=weight: # 다리에 있는 차의 총합 보다 적으면
q.append(front) # 다리에 있는 차에 추가시킵니다.
q_sum += front
else:
truck_weights.appendleft(front) # 아닌 경우에는 다리에 있는 차만 앞으로 보냅니다.
q.append(0)
return sec
PREVIOUS[프로그래머스] 카펫 풀이
NEXT[프로그래머스] 최솟값 만들기