문제

 

내가 작성한 코드 (틀림; 참고 블로그보고 작성함)
from collections import deque

def solution(bridge_length, weight, truck_weights):
    answer = 0
    trucks_on_bridge = [0] * bridge_length
    truck_weights = deque(truck_weights)
    while len(trucks_on_bridge):
        answer += 1
        trucks_on_bridge.pop(0)
        if truck_weights:
            if sum(trucks_on_bridge) + truck_weights[0] <= weight:
                trucks_on_bridge.append(deque.popleft(truck_weights))
            else:
                trucks_on_bridge.append(0)
    return answer

 

코드 설명
from collections import deque

> '큐'를 이용하기 위해서 deque 라이브러리를 볼러옴

 

def solution(bridge_length, weight, truck_weights):
    answer = 0
    trucks_on_bridge = [0] * bridge_length
    truck_weights = deque(truck_weights)
    while len(trucks_on_bridge):
        answer += 1
        trucks_on_bridge.pop(0)
        if truck_weights:
            if sum(trucks_on_bridge) + truck_weights[0] <= weight:
                trucks_on_bridge.append(deque.popleft(truck_weights))
            else:
                trucks_on_bridge.append(0)
    return answer

> trucks_on_bridge 변수는 bridge_length(다리 길이)만큼 0을 갖는 리스트 변수입니다.

> truck_weights 변수는 선입선출하기 위해서 deque() 함수를 적용하였습니다.

> while문을 사용하여 trucks_on_bridge 변수에 값이 없을 때까지 반복문을 진행시켰습니다.

> 진행 시마다 answer += 1을 시켜 시간을 구했습니다.

> trucks_on_bridge 변수에 pop(0)을 하여 변수에 맨 앞에 있는 값을 제거했습니다.

> if문을 적용하여 trucks_on_bridge 의 ㅎ바과 truck_weights의 맨 앞에 값을 합하여 weight(다리가 견딜 수 있는 무게)보다 적으면 trucks_on_bridge 변수에 그 값을 append 시켰습니다.

> 그렇지 않으면 0을 append 했습니다.

> 참고를 보면 쉽게 풀수 있는데 왜 혼자 하려면 생각이 안나는지... ㅜㅜ

 

참고 블로그

https://velog.io/@henrynoowah/PYTHON-Programmers-%EB%8B%A4%EB%A6%AC%EB%A5%BC-%EC%A7%80%EB%82%98%EB%8A%94-%ED%8A%B8

 

[프로그래머스] 다리를 지나는 트럭 - PYTHON

[프로그래머스] 다리를 지나는 트럭 - PYTHON

velog.io

 

+ Recent posts