<내 풀이>
function solution(bridge_length, weight, truck_weights) {
var answer = 0;
var queue = []; // 현재 다리 위 트럭 상태
var que_weight = 0; // 현재 다리 위 무게
while (truck_weights.length != 0) {
answer += 1;
if (queue.length === bridge_length) { // 다리 길이 만큼 요소가 찼다면, 마지막 요소 빼냄
que_weight -= queue.pop();
}
if (que_weight + truck_weights[0] <= weight) { // 다리 무게가 여유 있을 때
var next_tk = truck_weights.shift();
queue.unshift(next_tk); //앞쪽 트럭을 다리에 올림
que_weight += next_tk; // 다리 위 트럭 무게 더해줌
} else {
queue.unshift(0); // 무게 여유가 없다면 0을 채워 넣음.
}
if (truck_weights.length === 0) { // 마지막 트럭이 들어갔을 때
answer += bridge_length; // 초를 다리 길이만큼 더해주고 종료!
break;
}
}
return answer;
}
arr.shift()
배열에서 첫 번째 요소를 제거하고, 제거된 요소를 반환한다. 빈 배열의 경우 undefined를 반환한다.
arr.unshift()
새로운 요소를 배열의 맨 앞쪽에 추가하고, 새로운 길이를 반환한다.
반환 값으로는 새 요소가 추가된 배열의 길이 값을 반환한다.
반응형
'알고리즘 문제풀기 > 프로그래머스' 카테고리의 다른 글
[2019 카카오 겨울 인턴십] 크레인 인형뽑기 게임 - Python (0) | 2020.09.11 |
---|---|
[2020 카카오 인턴십] 수식 최대화 - Python (0) | 2020.09.11 |
[JavaScript] 프로그래머스 - 모의고사 (0) | 2020.05.08 |
[JavaScript] 프로그래머스 - 위장 (0) | 2020.05.07 |
[JavaScript] 프로그래머스 - 가장 큰 수 (0) | 2020.05.07 |