[자바스크립트] 큐(Queue) 구현하기

iberis2·2023년 3월 14일
0

알고리즘 문제

목록 보기
10/27
post-thumbnail

큐(Queue) 구현하기

멤버 변수

  • 데이터를 저장할 Object 타입의 storage
  • 큐의 가장 앞을 가리키는 Number 타입의 포인터 front
  • 큐의 가장 뒤를 가리키는 Number 타입의 포인터 rear

메서드

  • size(): 큐에 추가된 데이터의 크기를 리턴해야 합니다.
  • enqueue(): 큐에 데이터를 추가할 수 있어야 합니다.
  • dequeue(): 가장 먼저 추가된 데이터를 큐에서 삭제하고 삭제한 데이터를 리턴해야 합니다.

주의사항

내장 객체 Array.prototype에 정의된 메서드는 사용하면 안 됩니다.
포인터 변수 front, rear의 초기값은 -1, 0, 1등 임의로 지정할 수 있지만 여기서는 0으로 합니다.

사용 예시

const queue = new Queue();

queue.size(); // 0
for(let i = 1; i < 10; i++) {
  	queue.enqueue(i);
}
queue.dequeue(); // 1
queue.dequeue(); // 2
queue.size(); // 7
queue.enqueue(10);
queue.size(); // 8
queue.dequeue(); // 3
queue.dequeue(); // 4
queue.size(); // 6

나의 풀이

스택 구현해보고 바로 했더니 비교적 빨리 풀 수 있었다. ☺️
큐를 활용해서 BFS 문제 못 풀었던 것도 다시 도전해봐야지 🔥

class Queue {
  constructor() {
    this.storage = {}
    this.head = 0
    this.tail = 0
  }

  size() {
    return this.tail - this.head
  }

  enqueue(data) {
    this.storage[this.tail] = data
    this.tail++
  }

  dequeue() {
    if (this.size() <= 0) return

    let data = this.storage[this.head]
    delete this.storage[this.head]
    this.head++

    return data
  }
}
profile
React, Next.js, TypeScript 로 개발 중인 프론트엔드 개발자

0개의 댓글