プログラマー-橋を渡るトラック


テキスト


質問する



sol


1.bridge lenthのサイズに従って空の配列=>bridge on(橋を渡るトラック)を作成
2.queueの構造で和(bridge on)+待機中のトラックの先頭のインデックスの和を求める
2-1)橋を渡る重量を超えなければ、橋onに追加
2-2)超えなければ0(Null)を加算

code

from collections import deque
def solution(bridge_length, weight , truck_weights):
    answer = 0
    bridge_on = [0 for _ in range((bridge_length))]

    while bridge_on:
        bridge_on.popleft()
        if truck_weights:
            if sum(bridge_on) + truck_weights[0]  <= weight :
                bridge_on.append(truck_weights.pop(0))
            else:
                bridge_on.append(0)
        answer += 1 
    return answer

what i learned


1.必ずしもDequeが好きとは限らない!


最初はbridge on乙dequeを使用して作成され、問題がタイムアウトしているため、デフォルトのリストとdequeの速度の違いが見つかりました.
Dequeを使用してpopleft、pop(両端値)をインポートする場合はO(1)の速度ですが、中間idxの値をインポートする場合はO(n)より遅いので、List資料構造の使用を推奨します.

私のコードではsumを使ってすべての値を取得したからだと思います。


これからは気をつけてね!