본문 바로가기
알고리즘 (Python)/프로그래머스

[프로그래머스][Level2] 다리를 지나는 트럭 (파이썬)

by 근수짜세 2022. 8. 13.

문제출처

https://school.programmers.co.kr/learn/courses/30/lessons/42583

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제를 스스로 해결하였는가?  ->  X 

 처음 문제를 읽었을 땐 쉽다고 생각했는데 착각이였다. 꽤 오래 고민했지만 스스로 풀지 못하고 결국 다른 사람의 소스코드를 참고했다. 다리를 지나는 트럭을 비어있는 큐에서 시작했던게 실패의 원인이였다. 참고해서 다시 풀었지만 시간초과... 반복문마다 sum()함수를 쓸 필요가 없었다.


필요한 배경 지식

  • 스택/큐

주의할 점

  • 반복문마다 다리를 지나는 트럭들의 무게 합을 구하기위해 sum()함수를 사용할 경우 시간초과가 발생한다.

전체 코드

from collections import deque
def solution(bridge_length, w, truck_weights):
    wait = deque(truck_weights)
    ing = deque([0] * bridge_length)
    t, ingw = 0, 0
    while ing:
        t += 1
        outs = ing.popleft()
        ingw -= outs
        if wait:
            if ingw + wait[0] <= w:
                ins = wait.popleft()
                ing.append(ins)
                ingw += ins
            else:
                ing.append(0)
    return t

 

댓글