[プログラマー]橋を渡るトラック/消防車
6472 ワード
問題を整理する
https://programmers.co.kr/learn/courses/30/lessons/42583
橋に乗れるトラックの数
タイムブリッジを通るトラック待ちトラック0[][7,4,5,6]1~2[][7][4,5,6]3[7][4][4][5][4,5][6][7]6~7[7][4,5][6][6][8][7,4,5,6][7][7][7][7,4,6][6][8][7,4,5,6][][7,4,5][7][7][7][7][7][7][7][7][4,5][][][7][7][7][4,5][7][7
I/O例
bridge_lengthweighttruck_weightsreturn210[7,4,5,6]8100100[10]101100100[10,10,10,10,10,10,10,10,10,10]110
問題を解く
周波数は
この場合、橋の上のトラックの重量と入るトラックの重量の和が耐えられる重量より小さいことを確保し、小さいか等しい場合はトラックを橋に上げ、大きい場合は
タイムアウト
いずれにしても、橋上トラックの重量を求めるために
従って,
最終コード
https://programmers.co.kr/learn/courses/30/lessons/42583
橋に乗れるトラックの数
bridge_length
足の重量weight
トラックあたりの重量truck_weights
すべてのトラックに戻るには少なくとも数秒かかるという問題があります.タイムブリッジを通るトラック待ちトラック0[][7,4,5,6]1~2[][7][4,5,6]3[7][4][4][5][4,5][6][7]6~7[7][4,5][6][6][8][7,4,5,6][7][7][7][7,4,6][6][8][7,4,5,6][][7,4,5][7][7][7][7][7][7][7][7][4,5][][][7][7][7][4,5][7][7
I/O例
bridge_lengthweighttruck_weightsreturn210[7,4,5,6]8100100[10]101100100[10,10,10,10,10,10,10,10,10,10]110
問題を解く
큐
を使用してアクセスしました.周波数は
0
で表され、道路上の要素が消えるまで増加時間とpopleft()
が繰り返される.この場合、橋の上のトラックの重量と入るトラックの重量の和が耐えられる重量より小さいことを確保し、小さいか等しい場合はトラックを橋に上げ、大きい場合は
0
とappend
を合わせてください.タイムアウト
from collections import deque
def solution(bridge_length, weight, truck_weights):
time = 0
truck_weights = deque(truck_weights)
bridge = deque([0] * bridge_length)
bridge_weight = 0
while(bridge):
time += 1
bridge.popleft()
if truck_weights:
if sum(bridge) + truck_weights[0] <= weight:
bridge.append(truck_weights.popleft())
else:
bridge.append(0)
return time
5番目のテストケースでは、タイムアウトがより良いです.いずれにしても、橋上トラックの重量を求めるために
sum()
を使用しており、時間の複雑さはO(n)
で、道路の長さが長くなるとタイムアウトする可能性があります.従って,
sum
を用いずに,この問題を解決するために個別の変数bridge_weight
を作成した.最終コード
from collections import deque
def solution(bridge_length, weight, truck_weights):
time = 0
truck_weights = deque(truck_weights)
bridge = deque([0] * bridge_length)
bridge_weight = 0
while(bridge):
time += 1
bridge_weight -= bridge.popleft()
if truck_weights:
if bridge_weight + truck_weights[0] <= weight:
truck = truck_weights.popleft()
bridge.append(truck)
bridge_weight += truck
else:
bridge.append(0)
return time
Reference
この問題について([プログラマー]橋を渡るトラック/消防車), 我々は、より多くの情報をここで見つけました https://velog.io/@dogcu/프로그래머스-다리를-지나는-트럭-파이썬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol