[프로그래머스]다리를 지나는 트럭

SInuuu·2022년 10월 26일
0

다리를 지나는 트럭

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기능 써봤는데 직관적이고 유용하다. 더 공부해야겠다

profile
플린이의 좌충우돌 flutter 개발기

0개의 댓글