

여기서 bridge_length 는 견딜수 있는 트럭의 몸무게가 아니고
다리의 길이이다. 처음에 weight 와 같은것을 주어준건가 싶엇는데 아니였다. ^^;;;
당연히 다리에 많은 트럭이 올라와야되니까 처음에 sort 으로 작은 트럭부터 올라와라 라고 설정해야된다고 생각했었는데 오류가 발생하였다. sort 를 삭제하니 정답이라고 하는데 ... 이게 맞나? 싶다..^^:;
아는 사람있으면... 알려줬으면
처음에 너무 헷갈려서 시뮬레이션을 많이 돌려봤다. 예제에서 보듯이 모든 트럭이 다 지나갈때 의 시간을 구하는것으로
예를들면
다리의길이 100
몸무게 100
건너하 하는 트럭 [10]
일때 트럭이 1초에 다리에 들어왓고 트럭은 1초에 1 만큼 간다고 가정하면 100을 다 건너면 101 초가 걸린다.
그러면 지금 고려해야될것이
이다.
그러면 여기서 중요한건 시간이니까 시간을 중심으로 트럭을 빼야되겠다고 생각을 하였고
현재 시간 - 트럭이 들어온 시간 == 다리의 길이 이면 이 시간에 트럭은 빠져나갈수 있다는 것을 알수 있다.
트럭이 빠져나가면 다리에 올라올수 있는 무게가 증가하니까 이때 다시 다리에 트럭을 올려준다고 생각하면 편하다.
처음에는 다리에 들어온 트럭을 생각안하고 while 문을 빠져나가는 경우를 대기 트럭의 수가 0 일때 만 나가라 고 적었더니 다리에 트럭이 있는 경우를 카운트하지못해서 2가지 함수를 사용할수 있도록 하였다.
function solution(bridge_length, weight, truck_weights) {
var answer = 0;
var count=0;
var push_count=[];
var total_weiht=0;
while(truck_weights.length>0 || push_count.length>0){
count+=1;
if( push_count.length>0 && count-push_count[0][1] ==bridge_length){
var [tt,_]=push_count.shift();
total_weiht-=tt;
}
if(total_weiht+truck_weights[0]<=weight){
var truck=truck_weights.shift()
push_count.push([truck ,count]);
total_weiht+=truck;
}
}
return (count);
}