코드
function solution(bridge_length, weight, truck_weights) {
let ans = 0;
const bridge = Array(bridge_length).fill(0);
let total = 0;
while(truck_weights.length) {
ans++;
total -= bridge.shift();
if(total + truck_weights[0] <= weight) {
const curTruck = truck_weights.shift();
bridge.push(curTruck);
total += curTruck;
}
else {
bridge.push(0);
}
}
return ans + bridge_length
}
function solution(bridge_length, weight, truck_weights) {
let time = 0, qu = [[0, 0]], weightOnBridge = 0;
while (qu.length > 0 || truck_weights.length > 0) {
if (qu[0][1] === time) weightOnBridge -= qu.shift()[0];
if (weightOnBridge + truck_weights[0] <= weight) {
weightOnBridge += truck_weights[0];
qu.push([truck_weights.shift(), time + bridge_length]);
} else {
if (qu[0]) time = qu[0][1] - 1;
}
time++;
}
return time;
}
처음 풀이
- 길이 만큼의 배열을 만들고 트럭이 없으면 0으로 채워요
- total보다 작으면 트럭 집어 넣고, 아니면 0 집어넣어요
- 맨 앞 트럭 다 지나갈 때까지 기다려줘요!
- 한 칸씩만 진행되어 트럭이 들어갈 수 없을 때 시간 허비가 커요
미친 풀이
- time을 컨트롤 하는 닥터스트레인지
- time = qu[0][1] - 1 로 세심한 컨트롤도 미친 듯...
- 사실 이렇게 풀고 싶었는데 방법을 몰랐어요! 이중 배열로 풀어봐야겠어요