ํ (Queue) โ
ํ(Queue)๋ ์ ํ ์๋ฃ๊ตฌ์กฐ๋ก, ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ์์๋๋ก ์ฒ๋ฆฌํ๋ ๊ตฌ์กฐ์ ๋๋ค. ํ๋ ๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ๋๊ฐ๋ ์ ์ ์ ์ถ(FIFO, First In First Out)์ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
ํ์ ํน์ง โ
- ์ ์ ์ ์ถ(FIFO): ๊ฐ์ฅ ๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ๋๊ฐ๋๋ค.
- ์์ ์ ์ง: ์ ๋ ฅ๋ ๋ฐ์ดํฐ์ ์์๋ฅผ ์ ์งํฉ๋๋ค.
- ์ ํ๋ ์ ๊ทผ: ํญ์ ๊ฐ์ฅ ์์ ์๋ ๋ฐ์ดํฐ๋ง ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.
์ฃผ์ ์ฐ์ฐ โ
- enqueue: ํ์ ๋ค์ชฝ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- dequeue: ํ์ ์์ชฝ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํํฉ๋๋ค.
- front: ํ์ ๊ฐ์ฅ ์์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํฉ๋๋ค.
- isEmpty: ํ๊ฐ ๋น์ด์๋์ง ํ์ธํฉ๋๋ค.
TypeScript ๊ตฌํ ์์ โ
typescript
class Queue<T> {
private items: T[] = []
// ํ๊ฐ ๋น์๋์ง ํ์ธ
isEmpty(): boolean {
return this.items.length === 0
}
// ๋ฐ์ดํฐ ์ถ๊ฐ
enqueue(item: T): void {
this.items.push(item)
}
// ๋ฐ์ดํฐ ์ ๊ฑฐ ๋ฐ ๋ฐํ
dequeue(): T | undefined {
return this.items.shift()
}
// ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ ํ์ธ
front(): T | undefined {
return this.items[0]
}
// ํ ์ถ๋ ฅ
print(): void {
console.log(this.items.join(' '))
}
}
// ์ฌ์ฉ ์์
const queue = new Queue<number>()
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)
queue.enqueue(4)
queue.enqueue(5)
queue.print() // ์ถ๋ ฅ: 1 2 3 4 5
console.log(queue.dequeue()) // ์ถ๋ ฅ: 1
console.log(queue.front()) // ์ถ๋ ฅ: 2