본문 바로가기

Algorithm/프로그래머스

[프로그래머스] Lv.2 다리를 지나는 트럭

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

 

프로그래머스

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

programmers.co.kr

 

 

정답코드

def solution(bridge_length, weight, truck_weights):
    from collections import deque
    q = deque(truck_weights)
    bridge = deque([0] * bridge_length)
    answer = 0
    total = 0
    
    while q:
        answer += 1
        total -= bridge[0]
        bridge.popleft()
        if total + q[0] <= weight:
            truck = q.popleft()
            bridge.append(truck)
            total += truck
        else:
            bridge.append(0)
      
    return answer + bridge_length
처음에 첫 분기문에서 total말고 sum(bridge) 메서드를 사용하였더니 5번 테스트가 시간초과가 나왔다.. 확실히 시간이 애매하게 통과하는 듯하다. 그래서 sum()메서드는 시간을 더 잡아먹기 때문에 total이라는 변수를 추가해서 시간복잡도를 줄이는 방식으로 해결했다.