본문 바로가기

코딩테스트

[프로그래머스] level2. 다리를 지나는 트럭 (javascript)

반응형

문제

트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다.
※ 트럭이 다리에 완전히 오르지 않은 경우, 이 트럭의 무게는 고려하지 않습니다.

예를 들어, 길이가 2이고 10kg 무게를 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다.

나의 풀이

function solution(bridge_length, weight, truck_weights) {
    var answer = 0;
    let totalweight = 0; 
    let onbridge = [];

    while (true){
        ++answer

        //다 빠져나가면 while문 나가기
        if (truck_weights.length == 0 && onbridge.length == 0){
            break
        }

        //순차적으로 들어가기에 첫번째것만 확인해주며 처리해준다.
        if ( truck_weights[0] + totalweight <= weight){
            let next = truck_weights.shift();
            totalweight += next
            onbridge.push({"next":next,"seconds":1})
        }

        //순차적으로 빠져나가기에 첫번째것만 확인해주면 된다.
        if (onbridge[0].seconds == bridge_length){
                let val = onbridge.shift()
                totalweight -= val.next
        }

        // onbrige에 있는거 1초씩 시간 늘려주기(길이)
        for(let i = 0; i< onbridge.length;i++){
                onbridge[i].seconds += 1
        }
    }

    return answer;
}
반응형