[프로그래머스] 다리위를 지나는 트럭 javascript

김_리트리버·2020년 10월 5일
1

[알고리즘]

목록 보기
22/47
function solution(bridge_length, weight, truck_weights) {
   
    let answer = 0;
    answer++;
  
    // 현재 다리에 있는 트럭을 queue 로 설정 
    let currentBridge = [];
       // 현재 다리위의 트럭무게의 합을 설정 
    let bridgeWeightSum = 0;

 // 초기화 시킴 
    for(let i =0;i<bridge_length;i++){
        currentBridge.push(0);
    }
// 처음에는 다리위에 아무것도 없으니까 트럭한대는 무조건 들어갈 수 있음 
    // 대기중 트럭에서 하나 뺌
    let now_truck = truck_weights.shift();
// 현재 다리위에 올리고 
    currentBridge.unshift(now_truck);
// 다리길이는 일정하기 때문에 pop 으로 빼서 길이를 유지시킴 
    currentBridge.pop();
   // 트럭을 다리위에 올렸으니 무게 증가 시킴 
    bridgeWeightSum += now_truck;
    
    // 
    
    
    while(bridgeWeightSum!==0){ 
        answer++;
        // 시간이 지났으니 트럭을 이동시킴 => currentBridge.pop()
        // 만약에 트럭이 빠져나갔으면 현재 다리무게에서 뺌 
        
        bridgeWeightSum -= currentBridge.pop();
   
// 대기중 트럭중에서 맨 앞 트럭 + 현재 다리무게 <= 제한 하중
        // 트럭을 다리위에 진입 
        // 무게 증가 
        if(truck_weights[0]+bridgeWeightSum<=weight){
            now_truck = truck_weights.shift();
            currentBridge.unshift(now_truck);
            bridgeWeightSum+=now_truck;
        }
       // 무게조건이 안되면 현재있는 트럭만 다리위에서 이동
        else{
            currentBridge.unshift(0);
        
        }
        
    }
    return answer;
}
profile
web-developer

0개의 댓글