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

hhkim·2023년 10월 5일
0

Algorithm - JavaScript

목록 보기
151/188
post-thumbnail

풀이 과정

  1. 무한 반복
  2. 매 반복마다 결과 +1
  3. 다리 큐의 길이가 다리 길이와 같아졌으면 맨 앞 요소 shift()
  4. 다리 큐에 들어있는 트럭 총 무게와 현재 트럭 무게의 합이 다리가 견디는 무게를 넘지 않으면 큐에 넣기
    이때 총 트럭 무게 더하기
    넘으면 0 담기
  5. 총 트럭 무게가 0이면 모두 다리를 빠져나온 것이므로 반복 탈출

코드

function solution(bridge_length, weight, trucks) {
  let result = 0;
  const q = [];
  let totalWeight = 0;
  while (true) {
    if (q.length === bridge_length) totalWeight -= q.shift();
    if (trucks.length && totalWeight + trucks[0] <= weight) {
      q.push(trucks.shift());
      totalWeight += q.at(-1);
    } else {
      q.push(0);
    }
    ++result;
    if (totalWeight === 0) break;
  }
  return result;
}

🦾

처음에는 스택/큐로 분류가 되어 있어서 스택이나 큐라는 것만 알겠고 어떻게 구현할지 막막했는데, 막상 코드를 쓰다 보니까 금방 풀렸다.

0개의 댓글