プログラマー-橋を渡るトラック
3243 ワード
テキスト
質問する
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を使ってすべての値を取得したからだと思います。
これからは気をつけてね!
Reference
この問題について(プログラマー-橋を渡るトラック), 我々は、より多くの情報をここで見つけました https://velog.io/@jaeyoung0509/프로그래머스-다리를-지나가는-트럭テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol