728x90
📍 프로그래머스 2단계 - 다리를 지나는 트럭
⚡️ 나의 풀이
이전에 python
으로 풀어본 경험이 있다. 오랜만에 풀어서 이전에 푼 기억은 잘 나지 않았다. 처음에는 조금 헤맸는데 나름의 순서를 그려가며 풀었다. 제일 눈여겨봐야 할 점은 bridge
는 초마다 항상 shift()
를 해주고 weight
는 bridge
의 shift()
값을 더해준다는 것과 bridge
의 초기값은 bridge_length
만큼 0으로 초기화해준다. 그래야 트럭이 bridge_length
만큼 bridge
에 올라갈 수 있다.
bridge
는weight
와 관계없이 초마다shift()
한다.trucks
가 남아있으면weight
의 조건을 따진다. 만약, 현재 무게와 다음에 올 트럭의 무게를 더했을 때limit
보다 작다면(weight + trucks[0] <= limit
)bridge
로 트럭을 이동시킨다. 이후 트럭의 무게만큼weight
를 더한다. 현재 무게와 다음에 올 트럭의 무게를 더했을 때limit
보다 크다면(weight + trucks[0] > limit
) 트럭은 이동시키지 않고 다리 위에 있는 트럭만 앞으로 이동시킨다. (bridge
에는 0을push
)trucks
가 더 이상 남아있지 않다면weight
의 조건을 따지지 않고 다리 위에 있는 트럭을 한 칸씩 이동시킨다.bridge
에 아무것도 남아있지 않으면 반복문을 종료한다.
728x90
function solution(bridge_length, limit, trucks) {
var answer = 0;
let bridge = Array.from({ length: bridge_length }, () => 0);
let weight = 0;
while (bridge.length !== 0) {
weight -= bridge.shift();
if (trucks.length > 0) {
let out = trucks[0];
if (weight + out <= limit) {
bridge.push(trucks.shift());
weight += out;
} else bridge.push(0);
}
answer++;
}
return answer;
}
반응형
'Algorithm > 프로그래머스(Programmers)' 카테고리의 다른 글
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 올바른 괄호 (0) | 2022.03.23 |
---|---|
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 오픈채팅방 (0) | 2021.11.08 |
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 기능개발 (0) | 2021.10.22 |
[ 자바스크립트(JavaScript) ] 프로그래머스 level1 - 모의고사 (0) | 2021.10.21 |
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 프린터 (0) | 2021.10.19 |
댓글