[프로그래머스 Lv.2] 알고리즘 고득점 Kit 스택/큐 - 다리를 지나는 트럭

김민지·2024년 4월 15일
0

✨ 정답 ✨

function solution(bridge_length, weight, truck_weights) {
    let answer = 0;
    let bridge = new Array(bridge_length).fill(0);
    let totalWeight = 0; 
    let index = 0; 

    while (bridge.length) {
        answer+=1; 
        // 건너는 트럭
        const passedTruck = bridge.shift();
        // 남는 무게
        totalWeight -= passedTruck;
        // 아직 남아 있따면
        if (index < truck_weights.length) {
            // 트럭 하나 더 올릴 수 있는 경우
            if (totalWeight + truck_weights[index] <= weight) { 
                bridge.push(truck_weights[index]); 
                totalWeight += truck_weights[index]; 
                index++; 
            } else {
                bridge.push(0); 
            }
        }
    }

    return answer;
}

🧵 참고한 정답지 🧵

💡💡 해설 💡💡

bridge길이가 0이 될 때까지 while문을 돌려주어야 한다.
모든 트럭은 weight 이하의 무게를 가지고 있으므로 무조건 하나는 올릴 수 있다. 따라서 shift()는 무조건 한 번 해준다.
적재한 트럭 무게를 빼고 남는 무게를 구하고 아직 트럭이 남아 있다면, 올릴 수 있는지 확인하고 넣어준다.

profile
이건 대체 어떻게 만든 거지?

0개의 댓글

관련 채용 정보