function solution(bridge_length, weight, truck_weights) {
var time = 0;
var end = new Array(); //다리를 지난 트럭
var wait = truck_weights.slice(); //대기 트럭 (truck_weights를 그대로 쓸 수 있지만 배열 이름을 편하게 하고자 깊은 복사함)
var ing = new Array(bridge_length).fill(0); //다리를 건너는 트럭. 다리 길이로 배열을 만듬
var ing_weight = 0; //다리를 건너는 트럭 무게
//다리를 지난 트럭 개수가 전체 트럭 개수보다 작을 동안만 반복
while (end.length < truck_weights.length) {
time++; //시간 추가
//다리를 건너는 트럭 제일 앞의 것을 없애기
//만약 0이 아니라면 트럭이기 때문에 end에 추가하고 무게 빼기
var f = ing.shift();
if (f != 0) {
end.push(f);
ing_weight -= f;
}
//대기 중인 트럭이 있고, 건널 트럭과 현재 다리 위의 트럭의 무게가 다리가 버틸 수 있는 무게라면
//무게 추가하고 다리 위로 올리기
//그렇지 않으면 그냥 0 추가
if (wait.length > 0 && ing_weight + wait[0] <= weight) {
ing_weight += wait[0];
ing.push(wait.shift());
} else {
ing.push(0);
}
}
return time;
}
자바스크립트에서 배열의 깊은 복사는 slice()로 진행