0. 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/42583
1. 풀이 방법
- 이 문제는 deque를 사용하여, 실제 다리와 트럭의 움직임을 구현하면 된다.
- 만약 새로운 트럭이 올라갈 수 없는 상태라면. 0을 append 함으로써 빈 공간을 표현한다.
2. 코드
from collections import deque
def solution(bridge_length, weight, truck_weights):
answer = 0
dq = deque([0] * bridge_length)
onBriW = 0
for i in truck_weights: # 트럭이 정해진 순대로 지나감.
onBriW -= dq.popleft() # 맨 앞에 있는 애는 나오고, 다리 위 무게는 줄어듦
while (onBriW + i) > weight: # 새로운 트럭이 올라갈 수 있는가?
# 올라갈 수 없으면, 앞에 있는 애들을 빼고 0을 집어넣음.
answer += 1
dq.append(0)
onBriW -= dq.popleft()
dq.append(i) # 새로운 트럭이 올라감
onBriW += i # 무게 추가
answer += 1 # 트럭 올라가는 시간 추가
return answer + bridge_length
3. 마무리
'Computer Science > 알고리즘' 카테고리의 다른 글
[프로그래머스 - Python] 67257 - 수식 최대화 (0) | 2023.10.20 |
---|---|
[프로그래머스 - Python] 68936 - 쿼드압축 후 개수 세기 (0) | 2023.10.20 |
[프로그래머스 - Python] 86052 - 빛의 경로 사이클 (0) | 2023.10.15 |
[프로그래머스 - Python] 118667 - 두 큐 합 같게 만들기 (1) | 2023.10.15 |
[프로그래머스 - Python] 142085 - 디펜스 게임 (0) | 2023.10.15 |