Skip to content

Latest commit

ย 

History

History
52 lines (37 loc) ยท 1.82 KB

Stack+Queue.md

File metadata and controls

52 lines (37 loc) ยท 1.82 KB

์Šคํƒ(Stack)๊ณผ ํ(Queue) ๊ทธ๋ฆฌ๊ณ  ๋ฑ(Deque)

์Šคํƒ๊ณผ ํ๋Š” LIFO, FIFO ๊ตฌ์กฐ๋กœ ์•Œ๋ ค์ง„ ์ค‘์š”ํ•˜๊ณ  ๋งค๋ ฅ์ ์ธ ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์Šคํƒ์œผ๋กœ ํ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜๋„, ํ๋กœ ์Šคํƒ์„ ๊ตฌํ˜„ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋˜ํ•œ ์Šคํƒ๊ณผ ํ์˜ LIFO, FIFO ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฑ์ด๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋„ ์žˆ๋‹ค.

Stack (์Šคํƒ) - LIFO

  • ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ
  • ์‚ฝ์ž…, ์‚ญ์ œ ์—ฐ์‚ฐ์ด ํ•œ ๋ฐฉํ–ฅ์—์„œ ์ด๋ฃจ์–ด์ง„๋‹ค.
  • LIFO(Last In First Out) : ๋‚˜์ค‘์— ๋“ค์–ด๊ฐ„ ์›์†Œ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋Š” ๊ตฌ์กฐ์ด๋‹ค.

Stack ์šฉ์–ด

  • Top : ์Šคํƒ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฝ์ž…๋  ์œ„์น˜

Stack ํ™œ์šฉ

  • ์‹œ์Šคํ…œ ์Šคํƒ(System Stack) / ์‹คํ–‰์‹œ๊ฐ„ ์Šคํƒ(Runtime stack) : ํ”„๋กœ๊ทธ๋žจ์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ณผ ๋ณต๊ท€์— ๋”ฐ๋ฅธ ์‹คํ–‰ ์ˆœ์„œ ๊ด€๋ฆฌ
  • ์ธํ„ฐ๋ŸฝํŠธ ๋ฃจํ‹ด ์ฒ˜๋ฆฌ
  • ์ˆ˜์‹์˜ ํ›„์œ„ ํ‘œ๊ธฐ๋ฒ•(Postfix Notation)
  • ์ˆ˜์‹์˜ ๊ด„ํ˜ธ์‹ ๊ฒ€์‚ฌ
  • ์›น ๋ธŒ๋ผ์šฐ์ € ๋ฐฉ๋ฌธ ๊ธฐ๋ก (๋’ค๋กœ๊ฐ€๊ธฐ)
  • ์‹คํ–‰ ์ทจ์†Œ (undo)

Queue (ํ) - FIFO

  • ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ
  • ํ•œ ๋ฐฉํ–ฅ์—์„œ๋Š” ์‚ฝ์ž… ์—ฐ์‚ฐ์ด, ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์—์„œ๋Š” ์‚ญ์ œ ์—ฐ์‚ฐ์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
  • FIFO(First In First Out) : ๋จผ์ € ๋“ค์–ด๊ฐ„ ์›์†Œ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋Š” ๊ตฌ์กฐ์ด๋‹ค.

Queue ์šฉ์–ด

  • Front / Head : ํ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋  ์œ„์น˜
  • Rear / Tail : ํ์—์„œ ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฝ์ž…๋œ ์œ„์น˜

Queue ํ™œ์šฉ

  • ํ”„๋กœ์„ธ์Šค ๋ ˆ๋”” ํ
  • ์Šค์ผ€์ฅด๋ง
  • ๋„คํŠธ์›Œํฌ ํŒจํ‚ท ์ „์†ก์‹œ ํ•„์š”ํ•œ ๋ฒ„ํผ ๋Œ€๊ธฐ ํ
  • ์บ์‹œ(Cache) ๊ตฌํ˜„
  • javascript์˜ Event Loop ๊ด€๋ฆฌ (๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ)
  • ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS, Breadth-First Search)
  • ํ”„๋ฆฐํ„ฐ์˜ ์ถœ๋ ฅ ์ฒ˜๋ฆฌ

Deque (๋ฑ)

  • ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ
  • Double-ended Queue
  • ์–‘๋ฐฉํ–ฅ์—์„œ ์‚ฝ์ž…, ์‚ญ์ œ ์—ฐ์‚ฐ์ด ๋ชจ๋‘ ์ด๋ฃจ์–ด์ง€๋Š” ํ๋ฅผ ๋งํ•œ๋‹ค.
  • Stack(LIFO), Queue(FIFO)์ฒ˜๋Ÿผ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€์‹ ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.