์คํ๊ณผ ํ๋ LIFO, FIFO ๊ตฌ์กฐ๋ก ์๋ ค์ง ์ค์ํ๊ณ ๋งค๋ ฅ์ ์ธ ์ ํ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์คํ์ผ๋ก ํ๋ฅผ ๊ตฌํํ ์๋, ํ๋ก ์คํ์ ๊ตฌํํ ์๋ ์๋ค. ๋ํ ์คํ๊ณผ ํ์ LIFO, FIFO ๊ธฐ๋ฅ์ ๋ชจ๋ ํ์ฉํ ์ ์๋ ๋ฑ์ด๋ผ๋ ์๋ฃ๊ตฌ์กฐ๋ ์๋ค.
- ์ ํ ์๋ฃ๊ตฌ์กฐ
- ์ฝ์ , ์ญ์ ์ฐ์ฐ์ด ํ ๋ฐฉํฅ์์ ์ด๋ฃจ์ด์ง๋ค.
- LIFO(Last In First Out) : ๋์ค์ ๋ค์ด๊ฐ ์์๊ฐ ๋จผ์ ๋์ค๋ ๊ตฌ์กฐ์ด๋ค.
Top
: ์คํ์ ๋ฐ์ดํฐ๊ฐ ์ฝ์ ๋ ์์น
- ์์คํ ์คํ(System Stack) / ์คํ์๊ฐ ์คํ(Runtime stack) : ํ๋ก๊ทธ๋จ์ ํจ์ ํธ์ถ๊ณผ ๋ณต๊ท์ ๋ฐ๋ฅธ ์คํ ์์ ๊ด๋ฆฌ
- ์ธํฐ๋ฝํธ ๋ฃจํด ์ฒ๋ฆฌ
- ์์์ ํ์ ํ๊ธฐ๋ฒ(Postfix Notation)
- ์์์ ๊ดํธ์ ๊ฒ์ฌ
- ์น ๋ธ๋ผ์ฐ์ ๋ฐฉ๋ฌธ ๊ธฐ๋ก (๋ค๋ก๊ฐ๊ธฐ)
- ์คํ ์ทจ์ (undo)
- ์ ํ ์๋ฃ๊ตฌ์กฐ
- ํ ๋ฐฉํฅ์์๋ ์ฝ์ ์ฐ์ฐ์ด, ๋ฐ๋ ๋ฐฉํฅ์์๋ ์ญ์ ์ฐ์ฐ์ด ์ด๋ฃจ์ด์ง๋ค.
- FIFO(First In First Out) : ๋จผ์ ๋ค์ด๊ฐ ์์๊ฐ ๋จผ์ ๋์ค๋ ๊ตฌ์กฐ์ด๋ค.
Front
/Head
: ํ์์ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋ ์์นRear
/Tail
: ํ์์ ๋ง์ง๋ง ๋ฐ์ดํฐ๊ฐ ์ฝ์ ๋ ์์น
- ํ๋ก์ธ์ค ๋ ๋ ํ
- ์ค์ผ์ฅด๋ง
- ๋คํธ์ํฌ ํจํท ์ ์ก์ ํ์ํ ๋ฒํผ ๋๊ธฐ ํ
- ์บ์(Cache) ๊ตฌํ
- javascript์ Event Loop ๊ด๋ฆฌ (๋น๋๊ธฐ ์ฒ๋ฆฌ)
- ๋๋น ์ฐ์ ํ์(BFS, Breadth-First Search)
- ํ๋ฆฐํฐ์ ์ถ๋ ฅ ์ฒ๋ฆฌ
- ์ ํ ์๋ฃ๊ตฌ์กฐ
- Double-ended Queue
- ์๋ฐฉํฅ์์ ์ฝ์ , ์ญ์ ์ฐ์ฐ์ด ๋ชจ๋ ์ด๋ฃจ์ด์ง๋ ํ๋ฅผ ๋งํ๋ค.
- Stack(LIFO), Queue(FIFO)์ฒ๋ผ ํ์ฉ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋์ ํด์ ์ฌ์ฉํ ์ ์๋ค.