function solution(bridge_length, weight, truck_weights) {
var answer = 0;
let bridge =[];
for(var i=0;i<bridge_length;i++) {
bridge[i]=0;
}
while(bridge.length) {
answer++;
bridge.shift();
//기다리는 남은 트럭 존재할때
if(truck_weights.length) {
// 다리 위 트럭무게합
let bridgeWeight = bridge.reduce((prev, curr) => prev + curr,0);
//현재 다리위의 트럭무게와 기다리는 트럭무게 합이 기준보다 적을때
if((bridgeWeight+truck_weights[0])<=weight) {
let truck = truck_weights.shift();
bridge.push(truck);
}
else {
bridge.push(0);
}
}
}
return answer;
}
처음 봤을때 문제 자체를 이해하기 어려웠다. 예시를 봐도 이해가 되지않아 질문하기를 보니 나만 그런게 아니었던거같다. 결과가 계속 타임오버가 나서 다른 분들꺼 참고해보니 truck_weights length가 0인 상태에서도 계속 while에서 무한루프 실행되고 있는게 문제였다. 이번에 풀면서 처음으로 reduce기능 써봤는데 직관적이고 유용하다. 더 공부해야겠다