프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

<내 풀이>

function solution(bridge_length, weight, truck_weights) {
   var answer = 0;
   var queue = []; // 현재 다리 위 트럭 상태
   var que_weight = 0; // 현재 다리 위 무게

   while (truck_weights.length != 0) {
      answer += 1;

      if (queue.length === bridge_length) { // 다리 길이 만큼 요소가 찼다면, 마지막 요소 빼냄 
         que_weight -= queue.pop();
      }

      if (que_weight + truck_weights[0] <= weight) { // 다리 무게가 여유 있을 때
         var next_tk = truck_weights.shift();
         queue.unshift(next_tk); //앞쪽 트럭을 다리에 올림
         que_weight += next_tk; // 다리 위 트럭 무게 더해줌 
      } else {
         queue.unshift(0); // 무게 여유가 없다면 0을 채워 넣음.   
      }

      if (truck_weights.length === 0) { // 마지막 트럭이 들어갔을 때
         answer += bridge_length;      // 초를 다리 길이만큼 더해주고 종료!   
         break;
      }
   }
   return answer;
}

arr.shift()

배열에서 첫 번째 요소를 제거하고, 제거된 요소를 반환한다. 빈 배열의 경우 undefined를 반환한다.

 

arr.unshift()

새로운 요소를 배열의 맨 앞쪽에 추가하고, 새로운 길이를 반환한다.

반환 값으로는 새 요소가 추가된 배열의 길이 값을 반환한다.

반응형

+ Recent posts