728x90
큐 자료구조를 만들어서 해결할 수 있던 문제였다.
자바스크립트에서 따로 큐 라이브러리를 제공하지 않아서 이를 클래스로 만든 이후, 해결하였다.
0으로 다리 길이만큼 채워진 큐를 만들고, 다리가 버틸수 있는 무게를 체크하면서 트럭을 한대씩 보내주었다.
class Node {
constructor(val) {
this.val = val;
this.next = null;
}
}
class Queue {
constructor() {
this.front = null;
this.size = 0;
this.end = null;
this.sum = 0;
}
push(val) {
const node = new Node(val);
if (!this.size) {
this.front = node;
this.end = node;
} else {
this.end.next = node;
this.end = node;
}
this.size++;
this.sum += this.end.val;
}
pop() {
if (!this.size) return undefined;
const ret = this.front;
this.front = this.front.next;
this.size--;
this.sum -= ret.val;
return ret.val;
}
}
function solution(bridge_length, weight, truck_weights) {
const que = new Queue()
for (let i = 0 ; i < bridge_length ; i++) {
que.push(0)
}
let ret = 0
for (const truck of truck_weights) {
que.pop()
while (truck + que.sum > weight ){
que.pop()
que.push(0)
ret++
}
que.push(truck)
ret++
}
while (que.sum > 0) {
que.pop()
ret ++
}
return ret
}
728x90
'FrontEnd > 프로그래머스' 카테고리의 다른 글
[JS] JaDenCase 만들기 (0) | 2023.07.11 |
---|---|
[JS] 의상 (0) | 2023.07.11 |
[JS] 기능개발 (0) | 2023.07.08 |
[JS] 프로세스 (0) | 2023.07.07 |
[JS] 가장 큰 수 (0) | 2023.07.07 |