ํ(Queue)

0. ์š”์•ฝ

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

class Queue {
  constructor(array) {
    this.front = null;
    this.rear = null;
    this.size = 0;
    if (array) {
      array.forEach((item) => {
        this.enqueue(item);
      });
    }
  }

  // ํ๊ฐ€ ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ
  isEmpty() {
    return !Boolean(this.size);
  }

  // ํ์— ์›์†Œ ์ถ”๊ฐ€ํ•˜๊ธฐ
  enqueue(data) {
    const node = new Node(data);
    if (this.isEmpty()) this.front = node;
    else this.rear.next = node;
    this.rear = node;
    this.size++;
  }

  // ํ์— ์›์†Œ ์ œ๊ฑฐํ•˜๊ธฐ
  dequeue() {
    const frontQueue = this.front;
    if (this.isEmpty()) return;
    this.front = this.front.next;
    this.size--;
    if (this.size === 0) this.rear = null;
    return frontQueue;
  }

  // ํ์— ํ•ด๋‹น ์›์†Œ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ์กด์žฌํ•˜๋ฉด ํ•ด๋‹น ์›์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ
  contains(data) {
    let cur = this.front;
    let node;
    while (!node) {
      if (!cur) return;
      if (cur.data === data) node = cur;
      else cur = cur.next;
    }
    return node;
  }

  // ํ์˜ ๋ชจ๋“  ์›์†Œ ์ถœ๋ ฅํ•˜๊ธฐ
  display() {
    let cur = this.front;
    let index = 0;
    while (index < this.size) {
      console.log(`${index}. ${cur.data}`);
      cur = cur.next;
      index++;
    }
  }
}

1. ๊ฐœ์š”

JAVA ๋˜๋Š” ํŒŒ์ด์ฌ ๊ฐ™์€ ๊ฒฝ์šฐ ๋‚ด์žฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฒฝ์šฐ์—” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ๊ทธ๋ž˜์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ง์ ‘ ํ๋ฅผ ์ž‘์„ฑํ•ด์•ผํ•œ๋‹ค.

์‚ฌ์‹ค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ํ์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. Array.shift() ๋ฉ”์„œ๋“œ์™€ Array.pop() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„์—์„œ ํ์™€ ํฐ ์ฐจ์ด๋ฅผ ๋ณด์ด๊ฒŒ ๋œ๋‹ค. ํ์—์„œ์˜ ์›์†Œ ์ œ๊ฑฐ๋Š” ์‹œ๊ฐ„๋ณต์žก๋„ O(1)๋ฅผ ๋”ฐ๋ฅด๊ฒŒ ๋˜๋Š”๋ฐ ๋ฐฐ์—ด์—์„œ์˜ Array.shift() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ์›์†Œ ์ œ๊ฑฐ๋Š” ์‹œ๊ฐ„๋ณต์ž๋„ O(n)๋ฅผ ๋”ฐ๋ฅด๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Array.shift() ๋ฉ”์„œ๋“œ์˜ ๋‚ด๋ถ€ ๋กœ์ง์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ์— ์ ‘๊ทผํ•˜์—ฌ ํ•ด๋‹น ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋ฐฐ์—ด์—์„œ ์ œ๊ฑฐ

  • ๊ธฐ์กด ๋ฐฐ์—ด์—์„œ ์ฒซ ๋ฒˆ์งธ ์›์†Œ์˜ ๊ฐ’์€ ์‚ฌ๋ผ์กŒ์ง€๋งŒ ๊ณต๊ฐ„์€ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์Œ

  • Array.shift() ๋ฉ”์„œ๋“œ๋Š” ๊ณ„์†ํ•ด์„œ ์ฒซ ๋ฒˆ์งธ ์›์†Œ์— ์ ‘๊ทผํ•  ์˜ˆ์ •

  • ๋”ฐ๋ผ์„œ ๋‚˜๋จธ์ง€ ๋ฐฐ์—ด์˜ ์›์†Œ๋“ค์„ ์•ž์œผ๋กœ ํ•œ ์นธ์”ฉ ๋‹น๊ฒจ์ฃผ๋Š” ๊ณผ์ • ํ•„์š”

์ฆ‰ ๋งˆ์ง€๋ง‰์˜ ๊ณผ์ •์— ๋Œ€ํ•œ ์—ฐ์‚ฐ์ด ์ถ”๊ฐ€์ ์œผ๋กœ ์š”๊ตฌ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ์ถ”๊ฐ€์ ์ธ ์—ฐ์‚ฐ์œผ๋กœ ์ธํ•ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ์—์„œ ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๋งค์šฐ ํฐ ๊ฒฝ์šฐ, ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋งค์šฐ ์„ธ์„ธํ•˜๊ฒŒ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฐฐ์—ด๋กœ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€๊ฒŒ ๋œ๋‹ค๋ฉด ํ†ต๊ณผํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ ํ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋” ๋น ๋ฅธ ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ๋ฌธ์ œ์— ์ ‘๊ทผํ•œ๋‹ค๋ฉด ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋Š” ํ™•๋ฅ ์ด ์˜ฌ๋ผ๊ฐˆ ๊ฒƒ์ด๋‹ค.

์ฐธ๊ณ ํ•  ๋งŒํ•œ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ


2. ํ๋ž€?

FIFO(First in, First out) ์›์น™์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์—์„œ ๋น„๋™๊ธฐ ํ•จ์ˆ˜ ์‹คํ–‰์‹œ ์ฝœ๋ฐฑ๋“ค์ด ๋Œ€๊ธฐ์—ด๋กœ ๋“ค์–ด์˜ค๋Š” Task queue๊ฐ€ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์ด๋‹ค.

ํ๋Š” ๋†€์ด๊ณต์›์—์„œ ๋จผ์ € ์˜จ ์‚ฌ๋žŒ์ด ๋†€์ด๊ธฐ๊ตฌ๋ฅผ ๋จผ์ € ํƒ€๋Š” ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋จผ์ € ๋„ฃ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜๊ฐ„๋‹ค. ํ์˜ ๊ฐ€์žฅ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ฅผ front, ๋ ์›์†Œ๋ฅผ rear๋กœ ๋ถ€๋ฅด๋ฉฐ ๋ฐ์ดํ„ฐ์˜ ์ ‘๊ทผ๋ฐฉ๋ฒ•์€ front์™€ rear๋กœ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋˜ํ•œ rear์—์„œ๋Š” ์‚ฝ์ž… ์—ฐ์‚ฐ๋งŒ ์ผ์–ด๋‚˜๊ณ , front ์—์„œ๋Š” ์‚ญ์ œ ์—ฐ์‚ฐ๋งŒ ์ผ์–ด๋‚œ๋‹ค.

ํ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์„œ๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • dequeue: front๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • enqueue: ํ์— ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ด๋•Œ ํ•ด๋‹น ์›์†Œ๋Š” rear๊ฐ€ ๋œ๋‹ค.

  • contains: ํ•ด๋‹น ์›์†Œ๊ฐ€ ํ์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ์กด์žฌํ•˜๋ฉด ํ•ด๋‹น ์›์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


3. ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ํ ๊ตฌํ˜„ํ•˜๊ธฐ

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ํ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.


3-1. ๋…ธ๋“œ์™€ ํ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ

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

class Queue {
  constructor() {
    this.front = null;
    this.rear = null;
    this.size = 0;
  }
}

๋…ธ๋“œ์™€ ํ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์—์„œ ๋‹ค๋ฃจ์—ˆ๋˜ ๋‚ด์šฉ๊ณผ ๊ฐ™๋‹ค.


3-2. ํ๊ฐ€ ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ

class Queue {
  // ...
  isEmpty() {
    return !Boolean(this.size);
  }
}

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ˆซ์ž 0์€ ๋ถˆ๋ฆฌ์–ธ์œผ๋กœ ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ false๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์•ž์— !๋ฅผ ๋ถ™์—ฌ ture๋กœ ๋ฐ”๊พธ์–ด isEmpty ํ•จ์ˆ˜๊ฐ€ ํ์— ์›์†Œ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ํ•œ๋‹ค.


3-3. ํ์— ์›์†Œ ์ถ”๊ฐ€ํ•˜๊ธฐ

class Queue {
  // ...
  enqueue(data) {
    const node = new Node(data);
    if (this.isEmpty()) this.front = node;
    else this.rear.next = node;
    this.rear = node;
    this.size++;
  }
}
  • ํ์— ์›์†Œ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋œ Node๋ฅผ fornt๋กœ ์ง€์ •ํ•œ๋‹ค.

  • ํ์— ์›์†Œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๊ธฐ์กด ํ์˜ rear.next๋ฅผ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋œ Node๋กœ ์ง€์ •ํ•œ๋‹ค.

    front์™€ rear๋„ Node์ด๋‹ค. ๊ทธ๋ž˜์„œ data ์†์„ฑ๊ณผ next ์†์„ฑ์„ ๊ฐ€์ง„๋‹ค.

  • ๋งˆ์ง€๋ง‰์œผ๋กœ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋œ Node๋ฅผ rear๋กœ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค.(size๋„ ํ•˜๋‚˜ ์˜ฌ๋ฆฌ์ž.)


3-4. ํ์— ์›์†Œ ์ œ๊ฑฐํ•˜๊ธฐ

class Queue {
  // ...
  dequeue() {
    const frontQueue = this.front;
    if (this.isEmpty()) return;
    this.front = this.front.next;
    this.size--;
    if (this.size === 0) this.rear = null;
    return frontQueue;
  }
}
  • ํ์˜ front๋ฅผ frontQueue์— ์ €์žฅํ•œ๋‹ค.

  • ํ๊ฐ€ ๋น„์–ด์žˆ๋‹ค๋ฉด ์•„๋ฌด๊ฒƒ๋„ ๋ฆฌํ„ดํ•˜์ง€ ์•Š๊ณ  ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค.

  • ๊ธฐ์กด ํ์˜ front๋ฅผ front.next๋กœ ์ง€์ •ํ•œ๋‹ค.

  • size๋ฅผ ํ•˜๋‚˜ ๊ฐ์†Œ์‹œํ‚จ๋‹ค.

  • ๋งŒ์•ฝ size๊ฐ€ 0์ด ๋˜๋ฉด ํ์— ์›์†Œ๊ฐ€ ์—†๋Š” ๊ฒƒ์ด๋ฏ€๋กœ rear๋ฅผ null๋กœ ๋ฐ”๊พธ์–ด์•ผ ํ•œ๋‹ค.

  • ๋งˆ์ง€๋ง‰์œผ๋กœ ํ์—์„œ ์ œ๊ฑฐํ•œ ์›์†Œ์ธ frontQueue๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


3-5. ํ์— ํ•ด๋‹น ์›์†Œ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ์กด์žฌํ•˜๋ฉด ํ•ด๋‹น ์›์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ

class Queue {
  // ...
  contains(data) {
    let cur = this.front;
    let node;
    while (!node) {
      if (!cur) return;
      if (cur.data === data) node = cur;
      else cur = cur.next;
    }
    return node;
  }
}
  • cur๋ฅผ ํ์˜ front๋กœ ์ง€์ •ํ•œ๋‹ค.

  • ๋ฆฌํ„ดํ•˜๊ฒŒ ๋  ๋ณ€์ˆ˜ node๋ฅผ ์„ ์–ธํ•œ๋‹ค.

  • node์— ํ์˜ ์›์†Œ๊ฐ€ ํ• ๋‹น๋  ๋•Œ ๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค.

  • ๋งŒ์•ฝ cur์ด null์ด๋ผ๋ฉด ํ•ด๋‹น ์›์†Œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด๊ฒƒ๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ  ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค.

  • cur์ด null์ด ๋œ๋‹ค๋Š” ๊ฒƒ์€ ํ์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ ํ™•์ธํ–ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

  • cur.data์™€ contains ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ๋ฐ›์€ data๊ฐ€ ๊ฐ™๋‹ค๋ฉด node์— cur๋ฅผ ํ• ๋‹นํ•œ๋‹ค.

  • node์— cur๋ฅผ ํ• ๋‹นํ•˜๊ฒŒ ๋˜๋ฉด node๋Š” null์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋ณต๋ฌธ์€ ๋” ์ด์ƒ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.

  • ํ•˜์ง€๋งŒ ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด cur๋ฅผ cur.next๋กœ ๋ฐ”๊พธ์–ด ๋ฐ˜๋ณต๋ฌธ์„ ๊ณ„์† ์‹คํ–‰ํ•œ๋‹ค.


3-6. ํ์˜ ๋ชจ๋“  ์›์†Œ ์ถœ๋ ฅํ•˜๊ธฐ

class Queue {
  // ...
  display() {
    let cur = this.front;
    let index = 0;
    while (index < this.size) {
      console.log(`${index}. ${cur.data}`);
      cur = cur.next;
      index++;
    }
  }
}

3-7. ๋ฐฐ์—ด์„ ๋„˜๊ฒจ ํ ์ƒ์„ฑํ•˜๊ธฐ

class Queue {
  constructor() {
    this.front = null;
    this.rear = null;
    this.size = 0;
    if (array) {
      array.forEach((item) => {
        this.enqueue(item);
      });
    }
  }
}
  • constructor ํ•จ์ˆ˜๋ฅผ ์œ„์™€ ๊ฐ™์ด ์ˆ˜์ •ํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ๋ฅผ ๋งŒ๋“ค ๋•Œ array๊ฐ€ ์ „๋‹ฌ๋˜๋ฉด enqueue ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ฒŒ ํ•œ๋‹ค.

  • Array.forEach() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ํ์˜ ์›์†Œ๋กœ ๋„ฃ๋Š”๋‹ค.(์•ž์—์„œ ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ)


4. ํ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„

  • enqueue(์ถ”๊ฐ€): ํ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ํ์˜ ๋งจ ๋’ค ์›์†Œ(rear)์— ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค. ํ์— ๋ฌด์ˆ˜ํžˆ ๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋”๋ผ๋„ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ์‚ฝ์ž…์€ ํ•œ ๋ฒˆ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(1)์ด ๋œ๋‹ค.

  • dequeue(์‚ญ์ œ): FIFO์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋  ๋•Œ ํ์˜ ๋งจ ์•ž ์›์†Œ(front)๊ฐ€ ์‚ญ์ œ๋˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ํ์˜ ํฌ๊ธฐ์— ์ƒ๊ด€์—†์ด ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(1)๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

  • contains(์ ‘๊ทผ๊ณผ ๊ฒ€์ƒ‰): ํ์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ์˜ ์ ‘๊ทผ์€ ์‹œ๊ฐ„๋ณต์žก๋„ O(1)๋ฅผ ๊ฐ€์ง„๋‹ค. ํ•˜์ง€๋งŒ ํ์˜ ์›์†Œ ์ ‘๊ทผ์€ ํ์˜ ๋งจ ์•ž ์›์†Œ(front)์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— n๋ฒˆ์งธ ์›์†Œ์˜ ์ ‘๊ทผ์€ ์ฒซ ๋ฒˆ์งธ ์›์†Œ(front)๋ถ€ํ„ฐ ์ˆœํšŒํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n)๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

Big-O (์‹œ๊ฐ„๋ณต์žก๋„)
์‚ฝ์ž…
์‚ญ์ œ
์ฒซ ๋ฒˆ์งธ ์ ‘๊ทผ
n๋ฒˆ์งธ ์ ‘๊ทผ
๊ฒ€์ƒ‰

ํ (Queue)

O(1)

O(1)

O(1)

O(n)

O(n)


5. Conclusion

ํ๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๊ตฌํ˜„ ํ•ด๋ณด๋ฉด์„œ ์–ด๋–ค ์ž๋ฃŒ๊ตฌ์กฐ์ธ์ง€ ๊ณต๋ถ€ํ•ด๋ณด์•˜๋‹ค. ํ™•์‹คํžˆ ๋ฐฐ์—ด๊ณผ๋Š” ๋‹ค๋ฅธ ํŠน์ง•์ด ์žˆ๋‹ค. ์›์†Œ์˜ ์ถ”๊ฐ€, ์‚ญ์ œ๋Š” ๋น ๋ฅด์ง€๋งŒ ์›์†Œ์— ์ ‘๊ทผ, ๊ฒ€์ƒ‰์€ ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์ƒํ™ฉ์— ๋งž๋Š” ํ•„์š”ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ž˜ ์„ ํƒ์„ ํ•ด์•ผ๊ฒ ๋‹ค. ์ด์ „์— ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ ํ’€์—ˆ๋˜ ๋ฌธ์ œ๋ฅผ ์กฐ๊ธˆ ์ˆ˜์ •ํ•˜์˜€๋‹ค. ๊ทธ ์ด์œ ๋Š” ๊ทธ ๋• ๋‹จ์ˆœํžˆ ๋ธ”๋กœ๊ทธ์— ์žˆ๋Š” ํ ์ƒ์„ฑํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ๋ณต์‚ฌ๋ถ™์—ฌ ๋„ฃ๊ธฐ๋ฅผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋‚ด๊ฐ€ ์Šค์Šค๋กœ ๋งŒ๋“ (๋ฌผ๋ก  ๋ธ”๋กœ๊ทธ์˜ ํž˜์„ ๋นŒ๋ฆฐ๊ธด ํ–ˆ์ง€๋งŒ..) ํ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋ฌธ์ œ๋„ ์ž˜ ํ†ต๊ณผ๋˜๋Š” ๊ฒƒ์„ ๋ณด๋‹ˆ ์žฌ๋ฐŒ๊ณ  ๋ฟŒ๋“ฏํ•˜๋‹ค.


์ฐธ๊ณ 

[์ž๋ฃŒ๊ตฌ์กฐ] JS๋กœ ๊ตฌํ˜„ํ•˜๋Š” ํ (Queue) [์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํ(Queue)๊ตฌํ˜„ํ•˜๊ธฐ (+๊ฐœ๋…์ดํ•ด)


๐Ÿ“… 2022-09-02

Last updated