FrontEnd/프로그래머스

[JS] 다리를 지나는 트럭

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