[programmers] Lv2. 다리를 지나는 트럭 Javascript | protect-me
🕊 Link
Lv2. 다리를 지나는 트럭 Javascript
https://programmers.co.kr/learn/courses/30/lessons/42583
🧑🏻💻 Code(javascript)
function solution(bridge_length, weight, truck_weights) {
if (truck_weights.length == 1) {
return bridge_length + 1;
}
let second = 0;
let bridge = new Array(bridge_length).fill(0);
while (bridge.length) {
second++;
bridge.shift();
if (truck_weights.length) {
const sumOfBridge = bridge.reduce((acc, val) => acc + val, 0);
if (sumOfBridge + truck_weights[0] <= weight) {
bridge.push(truck_weights.shift());
} else {
bridge.push(0);
}
}
}
return second;
}
💡 Solution
function solution(bridge_length, weight, truck_weights) {
// 트럭이 1대 일 경우
if (truck_weights.length == 1) {
return bridge_length + 1;
}
//
let second = 0;
// 0으로 채운 다리 길이의 배열 생성
let bridge = new Array(bridge_length).fill(0);
while (bridge.length) {
second++;
bridge.shift(); // bridge 맨 앞 트럭을 제거
if (truck_weights.length) {
// 건너지 않은 트럭이 남아 있을 경우
const sumOfBridge = bridge.reduce((acc, val) => acc + val, 0);
// reduce를 활용해서 다리 위의 트럭 무게 합을 구함
if (sumOfBridge + truck_weights[0] <= weight) {
// 다리 위 트럭의 무게 + 건너지 않은 트럭 대기열의 첫번쨰 트럭 무게
// 위 무게가 다리가 버틸수 있는 무게보다 작거나 같으면
bridge.push(truck_weights.shift());
// 대기열 첫번째 트럭을 shift한 값을 다리위에 push
} else {
// 그렇지 않은 경우 0을 push
bridge.push(0);
}
}
// 트럭이 남아있지 않을 경우 push되는 값은 없고 bridge.length는 줄어듦.
}
return second;
}
👨🏻💻💭 Self Feedback
많이 돌아갔다가 결국 다시 리팩토링.
array를 만든다고 공간 복잡도 문제를 너무 심각하게 받아들이지 않도록 해야겠다.
결국은 시간 복잡도가 문제.
- 2021.04.17 - 최초 작성
Lv2. 다리를 지나는 트럭 Javascript
https://programmers.co.kr/learn/courses/30/lessons/42583
function solution(bridge_length, weight, truck_weights) {
if (truck_weights.length == 1) {
return bridge_length + 1;
}
let second = 0;
let bridge = new Array(bridge_length).fill(0);
while (bridge.length) {
second++;
bridge.shift();
if (truck_weights.length) {
const sumOfBridge = bridge.reduce((acc, val) => acc + val, 0);
if (sumOfBridge + truck_weights[0] <= weight) {
bridge.push(truck_weights.shift());
} else {
bridge.push(0);
}
}
}
return second;
}
💡 Solution
function solution(bridge_length, weight, truck_weights) {
// 트럭이 1대 일 경우
if (truck_weights.length == 1) {
return bridge_length + 1;
}
//
let second = 0;
// 0으로 채운 다리 길이의 배열 생성
let bridge = new Array(bridge_length).fill(0);
while (bridge.length) {
second++;
bridge.shift(); // bridge 맨 앞 트럭을 제거
if (truck_weights.length) {
// 건너지 않은 트럭이 남아 있을 경우
const sumOfBridge = bridge.reduce((acc, val) => acc + val, 0);
// reduce를 활용해서 다리 위의 트럭 무게 합을 구함
if (sumOfBridge + truck_weights[0] <= weight) {
// 다리 위 트럭의 무게 + 건너지 않은 트럭 대기열의 첫번쨰 트럭 무게
// 위 무게가 다리가 버틸수 있는 무게보다 작거나 같으면
bridge.push(truck_weights.shift());
// 대기열 첫번째 트럭을 shift한 값을 다리위에 push
} else {
// 그렇지 않은 경우 0을 push
bridge.push(0);
}
}
// 트럭이 남아있지 않을 경우 push되는 값은 없고 bridge.length는 줄어듦.
}
return second;
}
👨🏻💻💭 Self Feedback
많이 돌아갔다가 결국 다시 리팩토링.
array를 만든다고 공간 복잡도 문제를 너무 심각하게 받아들이지 않도록 해야겠다.
결국은 시간 복잡도가 문제.
- 2021.04.17 - 최초 작성
function solution(bridge_length, weight, truck_weights) {
// 트럭이 1대 일 경우
if (truck_weights.length == 1) {
return bridge_length + 1;
}
//
let second = 0;
// 0으로 채운 다리 길이의 배열 생성
let bridge = new Array(bridge_length).fill(0);
while (bridge.length) {
second++;
bridge.shift(); // bridge 맨 앞 트럭을 제거
if (truck_weights.length) {
// 건너지 않은 트럭이 남아 있을 경우
const sumOfBridge = bridge.reduce((acc, val) => acc + val, 0);
// reduce를 활용해서 다리 위의 트럭 무게 합을 구함
if (sumOfBridge + truck_weights[0] <= weight) {
// 다리 위 트럭의 무게 + 건너지 않은 트럭 대기열의 첫번쨰 트럭 무게
// 위 무게가 다리가 버틸수 있는 무게보다 작거나 같으면
bridge.push(truck_weights.shift());
// 대기열 첫번째 트럭을 shift한 값을 다리위에 push
} else {
// 그렇지 않은 경우 0을 push
bridge.push(0);
}
}
// 트럭이 남아있지 않을 경우 push되는 값은 없고 bridge.length는 줄어듦.
}
return second;
}
많이 돌아갔다가 결국 다시 리팩토링.
array를 만든다고 공간 복잡도 문제를 너무 심각하게 받아들이지 않도록 해야겠다.
결국은 시간 복잡도가 문제.
- 2021.04.17 - 최초 작성
댓글 환영
질문 환영
by.protect-me
Author And Source
이 문제에 관하여([programmers] Lv2. 다리를 지나는 트럭 Javascript | protect-me), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@protect-me/programmers-Lv2.-다리를-지나는-트럭-Javascript저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)