18. 큐(Queue) - 알고리즘

Junho Yun·2022년 11월 28일
0

알고리즘

목록 보기
17/18
post-thumbnail

큐(Queue)가 뭔가요?

선입선출 (FIFO)을 기반으로하는 데이터 구조입니다.

일반적으로 식당에 줄 서 있는 사람들을 생각해보시죠. 먼저 줄 서 있던 사람이 먼저 나가게 됩니다.

배열을 사용해서 큐 만들기

let q = [];

q.push("First")

q.push("Second")

q.push("Third")

q.shift()

두 가지 방식이 있기는 합니다. push와 shift 조합과 unshift와 pop의 조합입니다.
하지만 성능을 고려한다면 직접 코드를 짜는 것이 더욱 가볍습니다.

스크래치로 자신만의 큐 작성하기

class Node {
    constructor(value){
        this.value = value;
        this.next = null;
    }
}

class Queue {
    constructor(){
        this.first = null;
        this.last = null;
        this.size = 0;
    }
    enqueue(val){
        var newNode = new Node(val);
        if(!this.first){
            this.first = newNode;
            this.last = newNode;
        } else {
            this.last.next = newNode;
            this.last = newNode;
        }
        return ++this.size;
    }

    dequeue(){
        if(!this.first) return null;

        var temp = this.first;
        if(this.first === this.last) {
            this.last = null;
        }
        this.first = this.first.next;
        this.size--;
        return temp.value;
    }
}

큐의 빅오

  • Insertion : O(1)
  • Removal : O(1)
  • Searching : O(N)
  • Access : O(N)
profile
의미 없는 코드는 없다.

0개의 댓글