반응형
Level 2 스택/큐
문제 : https://programmers.co.kr/learn/courses/30/lessons/42583
정답 코드
from collections import deque
def solution(bridge_length, weight, truck_weights):
answer = 0
trucks = deque(truck_weights) # 트럭의 무게
onBrigde = deque([]) # [다리 위에 있는 트럭들의 무게, 경과 시간]
total = 0 #다리 위 트럭들의 무게 합
w = 0 # 현재 트럭
while trucks or onBrigde:
# 다리 위에 트럭이 있는 경우
if onBrigde:
#트럭 위에서 경과 시간이 다리 길이보다 긴 경우
if onBrigde[0][1] >= bridge_length:
tempw, temps = onBrigde.popleft()
total -= tempw
#트럭 위의 경과 시간 1증가
for i in range(len(onBrigde)):
onBrigde[i][1] += 1
# 대기 중인 트럭이 있는 경우
if trucks:
# 다리 위에 새 트럭을 올릴 수 있는 경우
if total + trucks[0] <= weight:
w = trucks.popleft()
onBrigde.append([w, 1])
total += w
# 1초 증가
answer += 1
return answer
결과 및 정리
트럭이 다리 위에 완전히 올라가야 시간을 세고 트럭이 완전히 다리를 벗어나야 1초를 증가시키는 것이 약간 헷갈렸지만 경우의 수를 차근차근 나누었더니 쉽게 해결할 수 있었습니다.
반응형
'ProblemSolving > Stack, Queue' 카테고리의 다른 글
백준 9935 문자열 폭발 (파이썬) (0) | 2022.06.01 |
---|---|
백준 1541 잃어버린 괄호 (파이썬) (0) | 2022.05.24 |
프로그래머스 주식 가격 (파이썬) (0) | 2022.05.05 |
프로그래머스 프린터 (파이썬) (0) | 2022.05.05 |
프로그래머스 기능 개발 (파이썬) (0) | 2022.05.05 |