[programmers] 다리를 지나는 트럭

yunan·2020년 9월 15일
0
post-thumbnail

🔦 문제 링크

✍️ 나의 풀이

  • 내 힘으로 풀진 못했다.
  • 문법적으로 부족했고 리스트(deque)를 미리 0을 채워놓는 발상을 하지 못했다.
  • dequequeue를 쓴 이유는 list의 앞 요소를 빼면 굉장한 비효율이기 때문이다.
  1. 다리에 무게가 0인 트럭이 있는 것처럼 0으로 데크를 채워둔다.
  2. 시간은 매 반복마다 +를 해준다. 그때 마다 빠져나오는 데크의 값도 현재 무게에서 빼준다.
  3. 현재 무게와 다음 트럭의 무게의 합이 최대 무게를 넘지 않으면 다리 진입
  4. 다리 진입 -> 트럭 무게 추가 , 데크에 추가, 트럭 대기 리스트 삭제
  5. 이 과정을 트럭 대기 리스트가 없어질 때 까지 반복

🛠 나의 코드


from queue import Queue  # queue
from collections import deque  # deque

def solution(bridge_length, weight, truck_weights):
    answer = 0
    curr_weight = 0
    truck_weights.reverse()
    q = deque()
    # print(truck_weights[-1])
    for i in range(bridge_length):
        q.appendleft(0)

    while len(q) != 0:
        answer += 1
        curr_weight -= q.pop()
        if len(truck_weights) != 0:
            if curr_weight + truck_weights[-1] <= weight:
                curr_weight += truck_weights[-1]

                q.appendleft(truck_weights.pop())
            else:
                q.appendleft(0)
        # print(curr_weight)
    return answer

📝 정리

  • c++에서 python으로 푼 지가 얼마 안되서 문법적으로 헷갈리는 부분이 정말 많다.
  • dequequeue에 대한 학습이 필요할 것 같다.
profile
Go Go

0개의 댓글