/
๐Ÿ“™

JS Stack and Queue

JavaScript
Table of contents

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์Šคํƒ๊ณผ ํ

์Šคํƒ(stack)

์Šคํƒ์€ ๋งˆ์ง€๋ง‰์— ์‚ฝ์ž…๋œ ํ•ญ๋ชฉ๋งŒ์„ ์ œ๊ฑฐํ•˜๊ณ  ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. (ํ›„์ž…์„ ์ถœ ; LIFO ; Last In First Out)

๋ฐฐ์—ด๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€๋œ ํ•ญ๋ชฉ ์™ธ์—๋Š” ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. ์ดˆ๋ฐ˜์— ์ถ”๊ฐ€๋œ ํ•ญ๋ชฉ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ดํ›„์— ์ถ”๊ฐ€๋œ ํ•ญ๋ชฉ๋“ค์„ ์ œ๊ฑฐํ•ด์•ผ ํ•œ๋‹ค. ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ํ•ญ๋ชฉ๋“ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.

Peeking

์Šคํƒ์˜ ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€๋œ ํ•ญ๋ชฉ์„ ๋“ค์—ฌ๋‹ค ๋ณด๋Š”๊ฒƒ, ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€๋œ ํ•ญ๋ชฉ์„ ์Šคํƒ์—์„œ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๋‹ค๋ฅธ ๋ณ€์ˆ˜์™€ ๋น„๊ตํ•ด ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€๋œ ํ•ญ๋ชฉ์„ ์ž๋ฃŒ ๊ตฌ์กฐ์—์„œ ์ œ๊ฑฐํ•ด์•ผ ํ• ์ง€ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

  • ์‹œ๊ฐ„ ๋ณต์žก๋„: $O(1)$
์‚ฝ์ž…

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด์˜ ๋ฉ”์†Œ๋“œ์ธ push()๋ฅผ ์‚ฌ์šฉํ•ด ์‚ฝ์ž…ํ•œ๋‹ค.

  • ์‹œ๊ฐ„ ๋ณต์žก๋„: $O(1)$
์‚ญ์ œ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด์˜ ๋ฉ”์†Œ๋“œ์ธ pop()๋ฅผ ์‚ฌ์šฉํ•ด ์‚ญ์ œํ•œ๋‹ค.

  • ์‹œ๊ฐ„ ๋ณต์žก๋„: $O(1)$
์ ‘๊ทผ

n๋ฒˆ์งธ ๋…ธ๋“œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” pop()์„ n๋ฒˆ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค. ๋ฒ„ํผ ์Šคํƒ์„ ์‚ฌ์šฉํ•ด ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค.

  • ์‹œ๊ฐ„ ๋ณต์žก๋„: $O(n)$
๊ฒ€์ƒ‰

๋ฒ„ํผ ์Šคํƒ์„ ๋งŒ๋“ค์–ด ์›๋ณธ ์Šคํƒ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  pop()์„ ์‚ฌ์šฉํ•ด ์ œ๊ฑฐํ•˜๋ฉฐ ๊ฒ€์ƒ‰ํ•œ๋‹ค.

  • ์‹œ๊ฐ„ ๋ณต์žก๋„: $O(n)$

ํ(queue)

ํ๋Š” ์ฒซ ๋ฒˆ์งธ๋กœ ์ถ”๊ฐ€๋œ ํ•ญ๋ชฉ๋งŒ์„ ์ œ๊ฑฐํ•˜๊ณ  ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. (์„ ์ž…์„ ์ถœ ; FIFO ; First In First Out)

์Šคํƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•œ ๋ฒˆ์— ํ•œ ๊ฐœ์˜ ํ•ญ๋ชฉ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ  ์ฒ˜์Œ ์ถ”๊ฐ€๋œ ํ•ญ๋ชฉ ์™ธ์—๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ํ•ญ๋ชฉ๋“ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.

Peeking

ํ์—์„œ ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์„ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ ๋„ ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.

  • ์‹œ๊ฐ„ ๋ณต์žก๋„: $O(1)$
์‚ฝ์ž…(enqueue ; ์ธํ)

ํ์—์„œ ์‚ฝ์ž…์€ ์ธํ๋ผ ๋ถ€๋ฅธ๋‹ค. ์ž๋ฃŒ ๊ตฌ์กฐ์˜ ๋งˆ์ง€๋ง‰ ์‚ฝ์ž…ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— push()๋ฅผ ์‚ฌ์šฉํ•ด ์ถ”๊ฐ€ํ•œ๋‹ค.

  • ์‹œ๊ฐ„ ๋ณต์žก๋„: $O(1)$
์‚ญ์ œ(dequeue; ๋””ํ)

ํ์—์„œ ์‚ญ์ œ๋Š” ๋””ํ๋ผ ๋ถ€๋ฅธ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— shift() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์‹œ๊ฐ„ ๋ณต์žก๋„: $O(n)^3$
์ ‘๊ทผ

n๋ฒˆ์งธ ๋…ธ๋“œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” dequeue๋ฅผ n๋ฒˆ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค. ๋ฒ„ํผ ํ๋ฅผ ์‚ฌ์šฉํ•ด ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค.

  • ์‹œ๊ฐ„ ๋ณต์žก๋„: $O(n)$
๊ฒ€์ƒ‰

๋ฒ„ํผ ํ๋ฅผ ๋งŒ๋“ค์–ด ์›๋ณธ ํ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  shift()๋ฅผ ์‚ฌ์šฉํ•ด ์ œ๊ฑฐํ•˜๋ฉฐ ๊ฒ€์ƒ‰ํ•œ๋‹ค.

  • ์‹œ๊ฐ„ ๋ณต์žก๋„: $O(n)$
logo
Things I've Learned