[๐Ÿ’ป ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  FE 44๊ธฐ] ์ž๋ฃŒ ๊ตฌ์กฐ - ์Šคํƒ(Stack), ํ(Queue)

JiEunยท2023๋…„ 5์›” 10์ผ
0
post-thumbnail

โœ”๏ธ ์‹œ์ž‘

์Šคํƒ(Stack), ํ(Queue)์— ๋Œ€ํ•ด ์•Œ์•„ ๋ณด์•˜๋‹ค.
์Šคํƒ๊ณผ ํ๋Š” ์ž…์ถœ๋ ฅ ๋ฐฉ์‹์ด ๋‹ค๋ฅธ ์ ์„ ์ฐธ๊ณ ํ•ด ๊ฐ๊ฐ์˜ ๊ตฌ์กฐ์™€ ํŠน์ง•์„ ์•Œ์•„๋ณด์•˜๋‹ค.


๐Ÿ“ ๋ฐฐ์šด ๊ฒƒ

โœ”๏ธ ์ž๋ฃŒ๊ตฌ์กฐ

  • ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ์˜ ๋ฌถ์Œ์„ ์ €์žฅํ•˜๊ณ , ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ ํ•œ ๊ฒƒ

๋ฐ์ดํ„ฐ

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

์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” 4๊ฐ€์ง€ ์ž๋ฃŒ๊ตฌ์กฐ

Stack, Queue, Tree, Graph

์ž๋ฃŒ๊ตฌ์กฐ ํŠน์ง•

๋งŽ์€ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์•Œ์•„๋‘๋ฉด ์–ด๋– ํ•œ ์ƒํ™ฉ์ด ๋‹ฅ์ณค์„ ๋•Œ ์ ํ•ฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ์ •์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ”๏ธ Stack

  • ์Œ“๋‹ค, ์Œ“์ด๋‹ค, ํฌ๊ฐœ์ง€๋‹ค์™€ ๊ฐ™์€ ๋œป
  • ๋ฐ์ดํ„ฐ(data)๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์Œ“๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

๊ตฌ์กฐ

  • ์›ํ†ต์„ ์ž๋ฃŒ๊ตฌ์กฐ Stack, ๊ตฌ์Šฌ์„ ๋ฐ์ดํ„ฐ(data)๋กœ ๋น„์œ 
    (ํ”„๋ง๊ธ€์Šค ๊ณผ์ž์™€ ๋น„์œ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ณผ์ž ์ผ€์ด์Šค = Stack, ๊ณผ์ž = data)
  • ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์ด ํ•˜๋‚˜์˜ ๋ฐฉํ–ฅ, ์Šคํ…์˜ ์ตœ์ƒ๋‹จ์—์„œ๋งŒ ์ด๋ฃจ์–ด์ง€๋Š” ์ œํ•œ์  ์ ‘๊ทผ์— ์žˆ๋‹ค.
  • LIFO(Last In First Out) ํ˜น์€, FILO(First In Last Out)์ด๋ผ ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค.
  • Stack ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์„ push, ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ๊ฒƒ์„ pop์ด๋ผ ํ•œ๋‹ค.

ํŠน์ง•

1. LIFO(Last In First Out) - ํ›„์ž…์„ ์ถœ

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

2. ํ•˜๋‚˜์˜ ์ž…์ถœ๋ ฅ ๋ฐฉํ–ฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ๋บ„ ์ˆ˜ ์žˆ๋Š” ๊ณณ์ด ์Šคํƒ์˜ ๊ฐ€์žฅ ์ตœ์ƒ๋‹จ ํ•œ๊ตฐ๋ฐ

3. ๋ฐ์ดํ„ฐ๋Š” ํ•˜๋‚˜์”ฉ ๋„ฃ๊ณ  ๋บ„ ์ˆ˜ ์žˆ๋‹ค.

  • ์Šคํƒ์— ํ•œ ๊ฐœ์”ฉ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด ์Šคํƒ ๋‚ด๋ถ€์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์Œ“์—ฌ ์žˆ๋”๋ผ๋„, ๋ฐ์ดํ„ฐ๋ฅผ ๋บ„ ๋•Œ๋Š” ์Šคํƒ์˜ ๊ฐ€์žฅ ์ตœ์ƒ๋‹จ์—์„œ ํ•œ ๋ฒˆ์— ํ•œ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋บ„ ์ˆ˜ ์žˆ๋‹ค.

์‹ค์‚ฌ์šฉ ์˜ˆ์ œ

  • ๋Œ€ํ‘œ์ ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €์˜ ๋’ค๋กœ๊ฐ€๊ธฐ, ์•ž์œผ๋กœ ๊ฐ€๊ธฐ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

โœ”๏ธ Queue

  • ์ค„์„ ์„œ์„œ ๊ธฐ๋‹ค๋ฆฌ๋‹ค, ๋Œ€๊ธฐ ํ–‰๋ ฌ ๋ผ๋Š” ๋œป

๊ตฌ์กฐ

  • ํ†จ๊ฒŒ์ดํŠธ (Queue ์ž๋ฃŒ๊ตฌ์กฐ), ์ž๋™์ฐจ(data)๋กœ ๋น„์œ 
    (ํœด์ง€์‹ฌ, ํ„ฐ๋ฏธ๋„ ๋“ฑ์œผ๋กœ ๋น„์œ ํ•  ์ˆ˜ ๋„ ์žˆ์„ ๊ฑฐ ๊ฐ™๋‹ค.)
  • Stack๊ณผ ๋ฐ˜๋Œ€ ๋˜๋Š” ๊ฐœ๋…
  • ๋จผ์ € ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋Š” FIFO(First In First Out) ํ˜น์€ LILO(Last In Last Out) ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • ์ž…๋ ฅ์˜ ๋ฐฉํ–ฅ๊ณผ ์ถœ๋ ฅ์˜ ๋ฐฉํ–ฅ์ด ๊ฐ๊ฐ ๊ณ ์ •๋˜์–ด ์žˆ๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ ํ์˜ ๋์—์„œ(tail), ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ๋Š” ํ์˜ ๋งจ ์•ž์—์„œ(head)๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์„ enqueue, ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ๊ฒƒ์„ dequeue๋ผ๊ณ  ํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋œ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

ํŠน์ง•

  1. FIFO(First In First Out) - ์„ ์ž…์„ ์ถœ ๊ตฌ์กฐ
  • ๋จผ์ € ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ์ผ ์ฒ˜์Œ์— ๋‚˜์˜ค๋Š” ์„ ์ž…์„ ์ถœ ๊ตฌ์กฐ
  1. ๋‘๊ฐœ์˜ ์ž…์ถœ๋ ฅ ๋ฐฉํ–ฅ
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ณณ๊ณผ ์ถœ๋ ฅํ•˜๋Š” ๊ณณ์ด ๊ฐ๊ฐ ์ •ํ•ด์ ธ ์žˆ์œผ๋ฉฐ ์ด ๋‘๊ฐœ์˜ ์ž…์ถœ๋ ฅ ๋ฐฉํ–ฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
    - ์ž…์ถœ๋ ฅ ๋ฐฉํ–ฅ์ด ๊ฐ™๋‹ค๋ฉด Queue๋ผ ๋ณผ ์ˆ˜ ์—†๋‹ค.
  1. ๋ฐ์ดํ„ฐ๋Š” ํ•˜๋‚˜์”ฉ ๋„ฃ๊ณ  ๋บ„ ์ˆ˜ ์žˆ๋‹ค.
  • ํ์— ํ•œ ๊ฐœ์”ฉ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด ํ ๋‚ด๋ถ€์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์Œ“์—ฌ ์žˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„, ๋ฐ์ดํ„ฐ๋ฅผ ๋บ„ ๋•Œ๋Š” ํ์˜ ๋งจ ์•ž์—์„œ ํ•œ ๋ฒˆ์— ํ•œ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋บ„ ์ˆ˜ ์žˆ๋‹ค.

์‹ค์‚ฌ์šฉ ์˜ˆ์ œ

  • ์ปดํ“จํ„ฐ์—์„œ๋„ ๊ด‘๋ฒ”์œ„ ํ•˜๊ฒŒ ์‚ฌ์šฉ ๋œ๋‹ค.
    - ํ”„๋ฆฐํ„ฐ์— ์—ฌ๋Ÿฌ ๋ฌธ์„œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ธ์‡„ ๋“ฑ

๋ฒ„ํผ(buffer)?

  • ์ปดํ“จํ„ฐ ์žฅ์น˜๋“ค ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ, ๊ฐ ์žฅ์น˜ ์‚ฌ์ด์— ์กด์žฌํ•˜๋Š” ์†๋„์˜ ์ฐจ์ด๋‚˜ ์‹œ๊ฐ„ ์ฐจ์ด๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ์ž„์‹œ ๊ธฐ์–ต ์žฅ์น˜์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ Queue๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

โœ๏ธ ๋งˆ์น˜๋ฉฐ

์Šคํƒ(Stack)์€ ํ”„๋ง๊ธ€์Šค ๊ณผ์ž, ํ(Queue)๋Š” ํ„ฐ๋ฏธ๋„์— ๋น„์œ ํ•˜๋ฉด์„œ ํ•™์Šตํ–ˆ๋˜ ๊ฑฐ ๊ฐ™๋‹ค.
์ด๋ก ์œผ๋กœ ๋ดค์„ ๋•Œ ์–ด๋–ค ๋ง์ธ์ง€ ์ดํ•ด๊ฐ€ ๋์ง€๋งŒ ๋ง‰์ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ
์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ ๋ง‰๋ง‰ํ–ˆ๋‹ค..

์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ•˜๊ธด ํ•ด์•ผํ•˜๋Š”๋ฐ ๊ธฐ์ดˆ๊ฐ€ ๋ถ€์กฑํ•ด์„œ ๊ทธ๋Ÿฐ์ง€ ์ž˜ ์ž‘์„ฑ๋˜์ง€ ์•Š๋Š”๋‹ค.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ดˆ๋ฅผ ๋ณต์Šตํ•˜๋ฉด์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ์ดˆ ๋ฌธ์ œ ๋ถ€ํ„ฐ ์ฐจ๊ทผ ์ฐจ๊ทผ ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค.

profile
๐Ÿ’ป ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋ชฉํ‘œ๋กœ ์„ฑ์žฅ ์ค‘! (์•Œ์•„๋ดค๋˜ ๋‚ด์šฉ ๋“ฑ์„ ์ •๋ฆฌํ•˜๊ธฐ)

0๊ฐœ์˜ ๋Œ“๊ธ€