[문제] (https://programmers.co.kr/learn/courses/30/lessons/42583)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function solution(bridge_length, weight, truck_weights) {
var answer = 0;
let inBridge = [];
inBridge.sum = 0;
let step = 0;
do {
step++;
if (inBridge.length > 0 && (step - inBridge[0].step + 1) > bridge_length) {
inBridge.sum -= inBridge[0].weight;
inBridge.shift();
}
const nextWeight = truck_weights.length > 0 ? truck_weights[0] : 100000;
if (inBridge.sum + nextWeight <= weight) {
const truck = {
step,
weight: truck_weights.shift(),
};
inBridge.push(truck);
inBridge.sum += truck.weight;
}
// console.log(inBridge, inBridge.length, 'step: ' + step);
} while(inBridge.length > 0)
answer = step;
return answer;
}
두가지의 조건을 만족하는 queue를 운영하는 문제이다.
while문 중간에 step을 세는게 꼬여서 한번 실패하고 다시 정리하여 푼 문제.
회고
좋은 풀이는 맑은 머리에서 나온다. (음악틀고, 카톡하며 푸니까 이상하게 꼬였음)