PR - 다리를 건너는 트럭
문제 및 예시
지난 풀이 참고
풀이 및 회고
- 지난 풀이에선 트럭을 트럭이 가진 무게로만 정의해서 다리 위에서의 트럭의 이동 진행사항을 반영하지 못한 게 실수였다.
- 이번에는 각 트럭을 객체로 저장해서
weight
값과position
값을 갖게 했다. - 다리를 지나는 트럭들의 시간별 위치이동 연산과, 다리 위 선두를 달리는 트럭이 다리에서 빠져나오는 연산을 하나의
forEach
문 안에서 하려다가 시간을 많이 잡아먹었다. - 배열을 순회하면서 배열을 수정하는 것은 웬만하면 하지말자.. 인접한 원소의 참조를 건너뛰어 버리는 실수를 자주 하는 것 같다.
코드
function solution(bridge_length, weight, truck_weights) {
const trucks = truck_weights.map((truck) => {
return {weight: truck, pos : 1};
})
let currentWeight = 0;
let time = 0;
let passing = [];
while(trucks.length > 0 || passing.length > 0) {
time++
passing.forEach((truck) => {
truck.pos++;
});
if(passing.length > 0) {
if(passing[0].pos > bridge_length) {
currentWeight -= passing[0].weight;
passing.shift();
}
}
if(trucks.length > 0) {
if(currentWeight + trucks[0].weight <= weight) {
currentWeight += trucks[0].weight;
passing.push(trucks.shift());
}
}
}
return time;
}
Author And Source
이 문제에 관하여(PR - 다리를 건너는 트럭), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@goody/PR-다리를-건너는-트럭-lkft00oh저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)