728x90
https://school.programmers.co.kr/learn/courses/30/lessons/42583
- 풀이
- 다리를 건너는 과정이 필요하므로 deque를 통해 다리를 건너는 과정을 표현
- 1초가 흐르면 다리를 1칸씩 건너므로 deque.popleft()로 다리의 맨 앞 부분 제거
- 트럭이 올라갈 수 있으면 트럭을 추가 / 없으면 0을 추가
- 마지막에 올라간 트럭이 다리를 다 건너는 시간 추가!!
- 코드
from collections import deque
# bridge_length : 올라갈 수 있는 최대 트럭 수
# weight : 다리가 견딜 수 있는 무게
def solution(bridge_length, weight, truck_weights):
time = 0
truck = deque(truck_weights)
# 트럭이 올라갈 수 있으면 트럭 추가 / 없으면 0추가
bridge = deque([0]*bridge_length)
# 현재 다리 위 무게
total = 0
while truck:
# 1초 흐르면서 1칸씩 이동
time += 1
# 다리 맨 앞에 무게가 빠짐
total -= bridge[0]
bridge.popleft()
# 트럭이 올라갈 수 있는가? (무게가 가능한가?)
if total + truck[0] <= weight:
w = truck.popleft()
total += w
bridge.append(w)
# 트럭이 올라갈 수 없다.
else:
bridge.append(0)
# 마지막에 올라간 트럭 다리 건너는 시간 추가
return time + bridge_length
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[백준] 2473. 세 용액 - Python (0) | 2023.03.07 |
---|---|
[프로그래머스] 단속카메라 - Python (0) | 2023.03.06 |
[프로그래머스] 숫자 게임 - Python (0) | 2023.03.05 |
[프로그래머스] 스킬트리 - Python (0) | 2023.03.04 |
[백준] 1005. ACM Craft - Python (0) | 2023.03.03 |
댓글