Queue์ ์ ์ ์ ์ถ(First In First Out: LIFO)์ ์๋ฃ๊ตฌ์กฐ
๋จผ์ ์ ๋ ฅ๋ ๊ฐ์ด ์ ์ผ ๋จผ์ ์ถ๋ ฅ์ด ๊ฐ๋ฅํ ์๋ฃ๊ตฌ์กฐ
Stack๊ณผ ๋ค๋ฅด๊ฒ ์ค์ํ Keyword๋ #
Front
์ #Rear
์ด๋ค.๊ทธ๋ฆฌ๊ณ Stack์์๋ ๋ฐ์ดํฐ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ด Push/Pop์ด์์ง๋ง,
Queue์์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ๋ ๊ธฐ๋ฅ์ #
Enqueue
, ๋ฐ์ดํฐ๋ฅผ ๋ด๋ณด๋ด๋ ๊ธฐ๋ฅ์ #Dequeue
Queue(ํ)๊ฐ ์คํ๋ ๋ ์ถ์์ ์ด๋ฏธ์ง
Queue์ ๊ฒฝ์ฐ
๋ฐ์ดํฐ๋ฅผ ์๋ ๊ฒ์ ๋ฐฐ์ด ๋ฉ์๋๋ Push / ๋นผ๋ด๋ ๊ฒ์ Shift
Rear - Queue์ ๋ท๋ถ๋ถ์ ๋ปํ๋ค.
๋ฐ์ดํฐ๊ฐ ์ฝ์ ๋ ์ Rear๋ ํ์นธ์ฉ ๋ค๋ก ์์นํ๋ค.
< ์ด๋ฏธ์ง ์ถ์ฒ : https://kingpodo.tistory.com/24?category=805745 >
Front - Queue์ ์๋ถ๋ถ์ ๋ปํ๋ค.
๋ฐ์ด๊ฑฐ ์ญ์ ๋๋ฉด Front๊ฐ ํ์นธ์ฉ ๋ค๋ก ์์นํ๋ค.
< ์ด๋ฏธ์ง ์ถ์ฒ : https://kingpodo.tistory.com/24?category=805745 >
์ฒ๋ฆฌํด์ผ ํ ๋ ธ๋์ ๋ฆฌ์คํธ๋ฅผ ์ ์ฅํ๋ ์ฉ๋๋ก ํ(Queue)๋ฅผ ์ฌ์ฉ
๋ ธ๋๋ฅผ ํ๋ ์ฒ๋ฆฌํ ๋๋ง๋ค ํด๋น ๋ ธ๋์ ์ธ์ ํ ๋ ธ๋๋ค์ ํ์ ๋ค์ ์ ์ฅ
๋ ธ๋๋ฅผ ์ ๊ทผํ ์์๋๋ก ์ฒ๋ฆฌ
์ฅ์ : ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅ๋ ์์๋๋ก ์ฒ๋ฆฌํด์ผ ํ ์ํฉ์ ์ ๋ฆฌ(ex. ์ํ ์์ ๋จ๋ง๊ธฐ)
๋จ์ : ํฌ๊ธฐ๊ฐ ์ ํ์ , ํ์ ์๋ถ๋ถ์ด ๋น์ฌ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์
๋ถ๊ฐ๋ฅ
var QueueArr = []; // ๋น๋ฐฐ์ด ์์ฑ
QueueArr.push(element1); // enqueue ๊ตฌํ (element1)์์ ์ถ๊ฐ
QueueArr.push(element2); // enqueue ๊ตฌํ (element2)์์ ์ถ๊ฐ
QueueArr.shift(); // dequeue ๊ตฌํ (์์์) ์ ๊ฑฐ
console.log(QueueArr); // [element2]; ์ถ๋ ฅ
QueueArr.length; // ํ์ size
const Queue = function() {
const someInstance = {};
let front = 0;
let rear = 0;
let count = 0;
// Use an object with numeric keys to store values
const storage = {};
// Implement the methods below
someInstance.enqueue = function(value) {
storage[rear] = value;
rear++;
count++;
};
someInstance.dequeue = function() {
if (count > 0) {
var deValue = storage[front];
delete storage[front];
front++;
count--;
return deValue;
}
};
//storage ๋ชฉ๋ก ํ์ธ
/*
someInstance.view = function () {
console.log(storage);
}
*/
someInstance.size = function() {
return count;
};
return someInstance;
};