본문 바로가기
알고리즘

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

by KBS 2022. 1. 27.
728x90

https://programmers.co.kr/learn/courses/30/lessons/42583?language=javascript

 

코딩테스트 연습 - 다리를 지나는 트럭

트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈

programmers.co.kr

 

  •  다리의 길이 만큼 배열을 만들고 0으로 채워줍니다.
  •  배열이 빌때까지 반복문을 돌립니다. 이때
    • 다리의 길이가 없어서 못건너간다면 반복문을 탈출하고 바로 정답 0을 리턴합니다. 
    • 다리의 길이가 있고 지나갈수잇을 확률이 있다면
      • 정답 변수를 +1 해줍니다. 
      • 다리의 현재 올라가있는 트럭의 무게를 파악하기 위해 다리위의 무게의 총합을 구해줍니다.
      • 현재 지나가려고 기다리는 트럭이 존재한다면
        • 첫번째 지나가려고하는 트럭의 무게와 현재 다리위의 트럭의 무게를 더한것이 다리의 버틸수 있는 무게보다 작거나 같다면
          • 트럭을 배열에 넣어숩니다
        • 그렇지 않다면 
          • 0을 배열에 추가하여 다리위에 있는 트럭을 한칸 밀어줍니다.

 

function solution(bridge_length, weight, truck_weights) {
    let answer = 0;
    const stack = new Array(bridge_length).fill(0)
    while (stack.length){
        stack.shift();
        answer += 1
        const sumArray = stack.reduce((acc, curr) => {
            return acc + curr
        }, 0)
        
        if (truck_weights.length){
            if (truck_weights[0] + sumArray <= weight){
                stack.push(truck_weights.shift());
            } else {
                stack.push(0)
            }
        }
    }
    return answer;
}
728x90

댓글