[JavaScript] 프로그래머스 - 다리를 지나는 트럭 (2단계)

배똥회장·2022년 9월 22일
0

📝 문제

프로그래머스 - 다리를 지나는 트럭 (2단계)


📝 풀이

📌 작성 코드

function solution(bridge_length, weight, truck_weights) {
    var time = 0;
    var end = new Array(); //다리를 지난 트럭
    var wait = truck_weights.slice(); //대기 트럭 (truck_weights를 그대로 쓸 수 있지만 배열 이름을 편하게 하고자 깊은 복사함)
    var ing = new Array(bridge_length).fill(0); //다리를 건너는 트럭. 다리 길이로 배열을 만듬
    var ing_weight = 0; //다리를 건너는 트럭 무게
    
	//다리를 지난 트럭 개수가 전체 트럭 개수보다 작을 동안만 반복
    while (end.length < truck_weights.length) {
        time++; //시간 추가
        
		//다리를 건너는 트럭 제일 앞의 것을 없애기
		//만약 0이 아니라면 트럭이기 때문에 end에 추가하고 무게 빼기
        var f = ing.shift();
        if (f != 0) {
            end.push(f);
            ing_weight -= f;
        }
        
		//대기 중인 트럭이 있고, 건널 트럭과 현재 다리 위의 트럭의 무게가 다리가 버틸 수 있는 무게라면
		//무게 추가하고 다리 위로 올리기
		//그렇지 않으면 그냥 0 추가
        if (wait.length > 0 && ing_weight + wait[0] <= weight) {
            ing_weight += wait[0];
            ing.push(wait.shift());
        } else {
            ing.push(0);
        }
    }
    
    return time;
}

📌 결과


📌 검색 내용

자바스크립트에서 배열의 깊은 복사는 slice()로 진행

profile
어쩌면 개발자

0개의 댓글