from collections import deque
def solution(bridge_length, weight, truck_weights):
truck_weights = deque(truck_weights)
bridge = deque([0 for _ in range(bridge_length)])
t = 0
bridge_weight = 0
while len(bridge) != 0:
pass_truck = bridge.popleft()
bridge_weight -= pass_truck
t += 1
if truck_weights:
if bridge_weight + truck_weights <= weight:
left = truck_weights.popleft()
bridge_weight += left
bridge.append(left)
else:
bridge.append(0)
return t
스택/큐를 이용한 문제.
시뮬레이션도 섞여있는 느낌인데 지나간 트럭, 다리 위 트럭, 아직 안지나간 트럭을 잘 구분하는 로직이 중요하다.
나중에 다시 풀어볼 가치가 있음.
'Algorithm | SQL > Programmers' 카테고리의 다른 글
[Programmers | Level 2] 오픈채팅방 (Python) (2019 KAKAO BLIND RECRUITMENT) (0) | 2021.05.12 |
---|---|
[Programmers | Level 2] 게임 맵 최단거리 (Python) (0) | 2021.05.04 |
[Programmers | Level 2] 방문 길이 (Python) (0) | 2021.05.03 |
[Programmers | Level 2] 행렬의 곱셈 (Python) (0) | 2021.04.30 |
[Programmers | Level 2] 프린터 (Python) (0) | 2021.04.30 |