JavaScript 자료구조 - Queue

ryu·2020년 3월 26일
1

Queue

JavaScript로 Queue 구현하기 (ES6)

  • Array 를 사용하여 Queue 를 구현할 수 있습니다.
  • Array의 push() 메소드로 enqueue 를,
    shift() 메소드로 dequeue 를 구현
    할 수 있습니다. ✨
class Queue {
  constructor() {
    this.store = [];
  }
  
  enqueue(item) {
    this.store.push(item);
  }
  
  dequeue() {
    return this.store.shift();
  }
}

const queue = new Queue();
queue.enqueue(1);
queue.enqueue(2);
queue.dequeue();   // 1

JavaScript로 Priority Queue 구현하기 (ES6)

  • Priority Queue (우선순위큐) 는 선입선출 방식이 아닌, 우선순위를 기준으로 우선순위가 높은 요소를 먼저 삭제하는 큐 입니다.
  • splice() 메소드로 dequeue 를 구현합니다.

Score 가 높은 학생을 먼저 추출해낸다는 방식으로 Priority Queue 를 구현해보았습니다.

class PriorityQueue {
  constructor() {
    this.store = [];
  }
  
  enqueue(item) {
    this.store.push(item);
  }
  
  dequeue() {
    let entry = 0;
    this.store.forEach((item, index) => {
      if (this.store[entry].score < this.store[index].score) {
        entry = index;
      }
    });
    return this.store.splice(entry, 1);
  }
}

class Student {
  constructor(name, score) {
    this.name = name;
    this.score = score;
  }
}

const priorityQueue = new PriorityQueue();
const pengsoo = new Student('Pengsoo', 10);
const kim = new Student('MJKim', 5);
const ryu = new Student('Ryu', 3);

priorityQueue.enqueue(pengsoo);
priorityQueue.enqueue(kim);
priorityQueue.enqueue(ryu);

priorityQueue.dequeue();   // Student('Pengsoo', 10)
profile
안녕하세요! 되는대로 열심히 사는 개발자입니다 🙋🏻‍♀️🍪Software Engineer @Kakao, AI Platform Team 🤖#TypeScript #React #Vue #Python #CloudNative

0개의 댓글