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 |
댓글