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

이상돈·2023년 5월 19일
0
post-thumbnail

문제분류 : 코팅테스트 연습

난이도 : Level 2

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

문제

제한사항

📌 내가 생각한 풀이

bridge라는 queue를 만들고, 다음 시간의 다리의 무게를 예측해서, 트럭이 올라갈 수 있는지 아닌지 확인해본다.
다음 시간의 다리의 무게 = 현재 다리의 있는 무게의 총합 + 가장 맨 앞의 트럭의 무게 - 다리의 맨 앞에있는 트럭의 무게
function solution(bridge_length, weight, truck_weights) {
    var answer = 0;
    //다리 길이를 표현한 배열
    let bridge = new Array(bridge_length).fill(0);
    let time =0;
    while(truck_weights.length !== 0){
        //다음것을 미리 예측하는 sum
        // 즉, bridge[0]을 뺴고, truck_weight[0]번째를 예측
        let sum = bridge.reduce((prev,now)=>prev+=now) - bridge[0] + truck_weights[0] ;
        //만약 무게보다 작다면 진행해도 된다는 뜻이므로, 진행
        if(sum <= weight){
            bridge.shift();
            bridge.push(truck_weights[0]);
            truck_weights.shift();
            time++;
        }else{
            bridge.push(0);
            bridge.shift();
            time++;
        }
    }
    return time + bridge.length
}

📌 느낀점

다음 시간의 다리의 무게를 예측하기가 조금 어려웠다. while문을 쓸때에는 다음번의 경우를 고려해야하는 경우가 있으므로 조심하자!

profile
사람들의 더 나은 삶을 위한 개발자

0개의 댓글