ブリッジトラック(ps反省)
6980 ワード
プログラマー...
最近プログラマーの第2段階を解いてみましたが、ちょっと難しい・・・本当に反省します一生懸命勉強しなければなりません.
説明:ブリッジトラック
簡単な説明:トラックはまず重量制限のある橋を通過し、トラックは少なくとも1秒ごとに1回移動することができ、橋の長さ、足の支持重量、トラックの重量をパラメータとする関数であり、トラックが通過するのに要する時間を返す関数である.
まず例を挙げて説明する
タイムブリッジを通るトラック待ちトラック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
コード#コード#
function solution(bridge_length, weight, truck_weights) {
let timeCount = 0;
//총시간이다.
let bridge = [];
//다리를 지나는 트럭의 하중을 표시한 배열이다.
let flag = true;
let currWeight = 0;
//현재하중을 다합친 배열
for (let i = 0; i < bridge_length; i++) {
bridge.push(0);
}//처음부터 끝까지 하중이 0이되는 배열을 만든다.
while (flag) {
let shiftVal = bridge.shift();//일초가 지날경우 트럭이 빠져나오는 로직
currWeight -= shiftVal;//=> 트럭이 빠져 나올 경우 하중을 빼준다.
if (currWeight + truck_weights[0] > weight) {
//다리의 현재 하중과 들어갈 트럭의 무게를 더한값을 다리무게와 비교해서 더 크다면 0을 푸쉬한다.
bridge.push(0);
} else {
//그게 아니라면 현재 하중의 들어갈 트럭의 하중을 더하고
currWeight += truck_weights[0];
bridge.push(truck_weights[0]);
//다리위에 트럭이 올라가고
truck_weights.shift();
// 하나가 빠진다.
}
//한바퀴가 돌면 1초가 증가
timeCount++;
//만약에 트럭이 다 올라타고 트럭배열이 빈다면..
if (truck_weights.length === 0) {
for (let i = 0; i < bridge_length; i++) {
timeCount++;//=> 제일 마지막 트럭이 다 통과할떄까지 초를 세어야한다.
}
flag = false;//그리고 이제 루프를 멈춘다.
}
}
return timeCount;
}
ちょっと難しいけど、頑張ればいいんだろうなぁReference
この問題について(ブリッジトラック(ps反省)), 我々は、より多くの情報をここで見つけました https://velog.io/@godkor200/다리를-지나는-트럭-ps반성テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol