프로그래머스 - 다리를 지나는 트럭 자바스크립트

gun·2020년 8월 4일
0

프로그래머스

목록 보기
3/4

문제 - https://programmers.co.kr/learn/courses/30/lessons/42583?language=javascript

큐(Queue)를 이용하여 해결하는 문제로 이상한 부분에서 시간을 많이 잡아먹었던 문제 입니다.
array.fill() 메서드를 이용해 보고 싶었는데 예상치 못한 문제가 생겼습니다.
fill()이 기존 배열의 값을 유지시키는줄 알았는데 기존에 배열을 바꿔버리는 상황이 생겨버리기 때문에 사용하지 못했습니다.

arr = [1,2,3,4] 
run = arr.fill(0)	//예상 값 run = [0,0,0,0]
			//예상하지 못한 값 arr = [0,0,0,0]

위 결과처럼 기존 배열인 arr도 바뀌는 특성때문에 사용하지 못했습니다.

function solution(bridge_length, weight, truck_weights) {
    let run = [] //다리 상태
    let time = 0;   //시간
    let now_Weight = 0;         //다리 무게
    let now_truck = truck_weights.shift();
    for(let i = 0; i < bridge_length; i++) {
        run.push(0);
    }
    run.push(now_truck);
    run.shift();
    now_Weight += now_truck
    time ++;
    while(now_Weight) {
        now_Weight -= run.shift();
        
        now_truck = truck_weights.shift();
        
        if(now_truck + now_Weight <= weight) {
            run.push(now_truck);
            now_Weight += now_truck
        } else {
            run.push(0)
            truck_weights.unshift(now_truck);

        }
        time++;
    }
    return time
}





0개의 댓글