더보기
...
solution 함수의 매개변수로 다리에 올라갈 수 있는 트럭 수 bridge_length, 다리가 견딜 수 있는 무게 weight, 트럭 별 무게 truck_weights가 주어집니다. 이때 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 return 하도록 solution 함수를 완성하세요.
https://school.programmers.co.kr/learn/courses/30/lessons/42583?language=cpp
문제를 보자마자 떠올렸다.
"QUEUE 를 사용해야겠구나!"
하지만 문제는 호락호락하지 않았다.
사실 자바스크립트로 큐를 어떻게 구현할 지 고민을 많이 했다...
C++은 그냥 라이브러리 불러오면 되는데...
처음 시도했던 문제풀이는 truck_weights 크기만큼 for문을 돌리고,
다리가 견딜 수 있는 무게나 다리에 올라갈 수 있는 트럭 수를 초과할 경우
idx-- 로 모든 트럭이 다리에 올라갈 수 있게끔 유도했다.
결과는 역시... 😭😭😭
그래서 자바스크립트를 슬쩍 C++로 바꾸고 문제를 풀었다.
물론 이도 쉽지 않았지만 다행히 통과... 👍
해당 풀이를 슬쩍 자바스크립트로 바꿔봤다.
JS 풀이)
function solution(bridge_length, weight, truck_weights) {
let answer = bridge_length;
let bridge = [];
let sum=0, idx=0;
while(1){
if(idx === truck_weights.length)
break;
if(bridge.length === bridge_length){
sum -= bridge[0];
bridge.shift();
}
if(sum+truck_weights[idx] <= weight){
sum += truck_weights[idx];
bridge.push(truck_weights[idx++]);
}
else
bridge.push(0);
answer++;
}
return answer;
}
물론 자바스크립트 문법을 적재적소에 사용하여 더 깔끔한 풀이가 많을 것이다.
하지만 어쩌냐... 나는 아직 이게 최선이다...
자바스크립트로 원트에 통과되는 날이 오길 고대하며...
'Algorithm' 카테고리의 다른 글
디펜스 게임 (Programmers Lv.2) (2) | 2024.10.02 |
---|---|
두 큐 합 같게 만들기 (Programmers Lv.2) (0) | 2024.09.11 |
삼각달팽이 (Programmers Lv.2) (0) | 2024.09.11 |
롤케이크 자르기 (Programmers Lv.2) (0) | 2024.09.11 |
문자열 내림차순으로 배치하기 (Programmers Lv.1) (0) | 2024.09.11 |