문제 이름 : 다리를 지나가는 트럭
<<< 문제 내용 >>>
function solution(bridge_length, weight, truck_weights) {
let answer = 0;
let bridge = new Array(bridge_length).fill(0);
let allTruckLen = truck_weights.length;
let pulledTruck = 0;
while(pulledTruck < allTruckLen){
let curPulledIdx = bridge.shift();
if(curPulledIdx !== 0){ // 꺼낸 인덱스가 트럭이라면
weight += curPulledIdx;
pulledTruck++;
}
if(truck_weights.length && weight>=truck_weights[0]){ // 트럭이 지나갈 무게가 남았다면
let curTruck = truck_weights.shift();
bridge.push(curTruck);
weight -= curTruck;
}else{
bridge.push(0);
}
answer++;
}
return answer;
}
* 다리를 만들고, 다리에서 나온 idx를 파악해서 트럭이라면 다시 무게를 더해주고, 꺼내진 트럭 개수를 늘려줍니다.
꺼내진 트럭 개수가 전체 트럭 개수와 같아질때까지 반복하면서, 트럭이 꺼내지자마자 들어갈 수 있을 수 있으니 else if와 같이 묶지 않고, 다른 조건으로 체크하면 됩니다.
도움이 되셨다면 공감 부탁드립니다.