반응형
문제
트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다.
※ 트럭이 다리에 완전히 오르지 않은 경우, 이 트럭의 무게는 고려하지 않습니다.
예를 들어, 길이가 2이고 10kg 무게를 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다.
나의 풀이
function solution(bridge_length, weight, truck_weights) {
var answer = 0;
let totalweight = 0;
let onbridge = [];
while (true){
++answer
//다 빠져나가면 while문 나가기
if (truck_weights.length == 0 && onbridge.length == 0){
break
}
//순차적으로 들어가기에 첫번째것만 확인해주며 처리해준다.
if ( truck_weights[0] + totalweight <= weight){
let next = truck_weights.shift();
totalweight += next
onbridge.push({"next":next,"seconds":1})
}
//순차적으로 빠져나가기에 첫번째것만 확인해주면 된다.
if (onbridge[0].seconds == bridge_length){
let val = onbridge.shift()
totalweight -= val.next
}
// onbrige에 있는거 1초씩 시간 늘려주기(길이)
for(let i = 0; i< onbridge.length;i++){
onbridge[i].seconds += 1
}
}
return answer;
}
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스]level2. 최댓값 최솟값 (javascript) (0) | 2021.05.16 |
---|---|
[프로그래머스] level2. 위장 (javascript) (0) | 2021.05.16 |
[프로그래머스] level2. 피보나치 (javascript) (0) | 2021.05.16 |
[프로그래머스] level1. 로또의 최고 순위와 최저 순위 (javascript) (3) | 2021.05.16 |
[프로그래머스] level2. 수식 최대화 (javascript) (0) | 2021.05.16 |