문제
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
핵심 아이디어
- 다리를 나타내는 배열을 길이만큼 0으로 초기화한다.
- 현재 다리 위 트럭들의 무게를 추적하는 변수를 0으로 설정한다.
- 전체 경과 시간을 추적하는 변수를 0으로 설정한다.
- 모든 트럭이 다리를 건너거나 현재 다리 위에 트럭이 없을 때까지 반복문을 실행한다.
- 매 반복마다 1초가 증가한다.
- 다리에서 가장 앞에 있는 트럭(또는 0)을 제거하고 그 트럭의 무게를 현재 무게에서 뺀다.
- 대기 중인 트럭이 남아 있고, 현재 다리 위 트럭들의 무게 합과 대기 중인 첫 번째 트럭의 무게를 더했을 때 허용 무게 이하이면 그 트럭을 다리로 옮긴다.
- 그렇지 않으면 0을 다리에 추가하여 시간을 진행시킨다.
- 전체 경과된 시간을 반환한다.
정답
function solution(bridge_length, weight, truck_weights) {
let bridge = Array(bridge_length).fill(0);
let currentWeight = 0;
let totalSeconds = 0;
while (truck_weights.length > 0 || currentWeight > 0) {
totalSeconds++;
const goneTruck = bridge.shift();
currentWeight -= goneTruck;
if (truck_weights.length > 0 && currentWeight + truck_weights[0] <= weight) {
const next_truck = truck_weights.shift();
currentWeight += next_truck;
bridge.push(next_truck);
} else {
bridge.push(0);
}
}
return totalSeconds;
}
문제
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
핵심 아이디어
- 다리를 나타내는 배열을 길이만큼 0으로 초기화한다.
- 현재 다리 위 트럭들의 무게를 추적하는 변수를 0으로 설정한다.
- 전체 경과 시간을 추적하는 변수를 0으로 설정한다.
- 모든 트럭이 다리를 건너거나 현재 다리 위에 트럭이 없을 때까지 반복문을 실행한다.
- 매 반복마다 1초가 증가한다.
- 다리에서 가장 앞에 있는 트럭(또는 0)을 제거하고 그 트럭의 무게를 현재 무게에서 뺀다.
- 대기 중인 트럭이 남아 있고, 현재 다리 위 트럭들의 무게 합과 대기 중인 첫 번째 트럭의 무게를 더했을 때 허용 무게 이하이면 그 트럭을 다리로 옮긴다.
- 그렇지 않으면 0을 다리에 추가하여 시간을 진행시킨다.
- 전체 경과된 시간을 반환한다.
정답
function solution(bridge_length, weight, truck_weights) {
let bridge = Array(bridge_length).fill(0);
let currentWeight = 0;
let totalSeconds = 0;
while (truck_weights.length > 0 || currentWeight > 0) {
totalSeconds++;
const goneTruck = bridge.shift();
currentWeight -= goneTruck;
if (truck_weights.length > 0 && currentWeight + truck_weights[0] <= weight) {
const next_truck = truck_weights.shift();
currentWeight += next_truck;
bridge.push(next_truck);
} else {
bridge.push(0);
}
}
return totalSeconds;
}