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

공룡개발자·2022년 4월 8일
0

✍ 나의 풀이

function solution(bridge_length, weight, truck_weights) {
    // 다리배열을 다리 길이보다 하나 작게 0으로 채워서 만들고
    // 마지막 요소에 첫 트럭을 넣는다
    let bridge = Array.from({length: bridge_length - 1}, v => 0);

    // 트럭 하나가 이미 투입되었고, 1초가 지났다 가정하고 시작!
    bridge.push(truck_weights.shift());
    let time = 1;

    // 다리에 트럭이 없을때 까지 무한루프
    while (bridge.reduce((a, b) => a + b) > 0) {
        // 다리 제일 앞에 있는 요소를 보내고
        // 버틸 수 있는 다리 무게가 다음 트럭보다 높은지 비교한다.
        // 버틸 수 있으면 다리 마지막 요소에 트럭을 넣고 시간을 경과 시키고
        // 버틸 수 없으면 0을 넣고 시간을 경과 시킨다.
        bridge.shift();
        if (weight - bridge.reduce((a, b) => a + b) >= truck_weights[0]) {
            bridge.push(truck_weights.shift());
        } else {
            bridge.push(0);
        }
        time++;
    }
    return time;
}
profile
공룡의 발자취

0개의 댓글