반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
Archives
Today
Total
관리 메뉴

undefined

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

Coding Test

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

JavaScripter 2022. 7. 12. 23:28
반응형

문제 설명

다리에서 들어오고 나갈때 카운트 해야함

다리의 배열 요소의 합 + 현재 대기 트럭무게의 합이 weight를 넘어서면 안됨


문제 풀이

function solution(bridge_length, weight, truck_weights) {
    const bridge = new Array(bridge_length).fill(0)
    let count = 0
    
    while(bridge.length) {
        count++
        bridge.shift()
        
        if(truck_weights.length) {
            const nowWeight = bridge.reduce((sum,cur)=>sum+cur,0)
            
            if(nowWeight+truck_weights[0] <= weight) {
                bridge.push(truck_weights.shift())
            } else {
                bridge.push(0)
            }
        }
    }
    return count
}

1. 다리의 길이만큼 0으로 채운 배열인 bridge생성

 

2. 대기 트럭이 없는 상태이지만 다리에 트럭이 있을 경우를 대비하여 bridge의 길이기준으로 while 루프 실행

 

3. bridge에 shift해주고 count++  (bridge의 처음 요소가  없어진다는 것 === 다리를 나가거나 다리에 들어오는 상태 )

 

4. 대기 트럭이 있을 때 (다리 배열의 합 + 대기트럭배열의 처음요소)가 다리무게제한보다 작거나 같다면 해당 트럭을 대기트럭배열에서 빼주고 다리 배열에 넣어준다.

=>다리에 들어오는 상태

 

5. 다리무게제한을 초과한다면 다리배열에 0을 푸시한다 (ex)[7,0]의 상태가됨 => 다음 루프 때 7이 나가고 count가 1증가됨 )

=>다리에서 빠져나가는 상태


배운 점

 

반응형
Comments