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

dongwon·2021년 5월 2일
0

프로그래머스-Level 2

목록 보기
21/33

문제

다리를 지나는 트럭 https://programmers.co.kr/learn/courses/30/lessons/42583

해결

  1. queue를 이용해 다리를 직접 구현. pop()unshift()를 이용해 트럭이 이동하도록 구현.
  2. queue에 있는 트럭들의 합 => reduce 메서드로 구현.

비효율적 입니다. queue로 구현해 O(N^2) 까지는 안갔는 지 통과는 했습니다.

코드

function solution(bridge_length, weight, truck_weights) {
  let queue = new Array(bridge_length).fill(0);
  let total_weight = 0;
  let max_weight = weight;
  let sec = 0;

  while (true) {
    if (truck_weights.length === 0 && queue.every((v) => v === 0)) break;

    queue.pop();
    queue.unshift(0);

    const current_truck_weight = truck_weights[0];

    total_weight = queue.reduce((a, b) => a + b);

    if (max_weight >= total_weight + current_truck_weight) {
      queue[0] = current_truck_weight;
      truck_weights.shift();
    }
    sec++;
  }

  return sec;
}
profile
데이원컴퍼니 프론트엔드 개발자입니다.

0개의 댓글