멤버 변수
- 데이터를 저장할 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
}
}