์คํ๊ณผ ํ (Stack & Queue)
โถ ์คํ(Stack) : LIFO๊ตฌ์กฐ. ๋ง์ง๋ง์ ์ ์ฅ๋ ๊ฒ์ ์ ์ผ ๋จผ์ ๊บผ๋ด๊ฒ ๋๋ค.
์คํ์ ๋ฐ์ด ๋งํ ์์์ด๋ค. ์์์ 0, 1, 2๋ฅผ ์์๋๋ก ๋ฃ๊ฒ ๋๋ฉด ๊บผ๋ผ ๋๋ ๋ง์ง๋ง์ ๋ฃ์๋ 2, 1, 0 ์์๋ก ๊บผ๋ด๊ฒ ๋๋ค.
์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ LIFO(Last In First Out)๊ตฌ์กฐ๋ผ๊ณ ํ๋ค.
์คํ์ ํน์ง์ ์ ์ฅํ ์์์ ์ถ์ถํ๋ ์์๊ฐ ๋ฐ๋์ธ๊ฒ์ด ํน์ง์ด๋ค.
์คํ์์๋ ์ ์ฅ์ push, ์ถ์ถ์ pop ์ด๋ผ๊ณ ํ๋ค.
โถ ํ(Queue) : FIFO๊ตฌ์กฐ. ์ ์ผ ๋จผ์ ์ ์ฅํ ๊ฒ์ ์ ์ผ ๋จผ์ ๊บผ๋ด๊ฒ ๋๋ค.
ํ๋ ์๋์ด ๋ท๋ฆฐ ์์์ด๋ค. ์์์ 0, 1, 2๋ฅผ ์์๋๋ก ๋ฃ๊ณ , ๊บผ๋ผ ๋๋ 0, 1, 2 ์์๋๋ก ๊บผ๋ด๊ฒ ๋๋ค.
์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ FIFO(First In First Out) ๊ตฌ์กฐ๋ผ๊ณ ํ๋ค.
ํ์ ํน์ง์ ์ ์ฅํ ์์์ ์ถ์ถํ๋ ์์๊ฐ ์ผ์นํ๋ ๊ฒ์ด ํน์ง์ด๋ค.
ํ์์๋ ์ ์ฅ์ offer, ์ถ์ถ์ poll์ด๋ผ๊ณ ํ๋ค.
๊ทธ๋ผ ์คํ๊ณผ ํ๋ฅผ ๋ฐฐ์ด๊ณผ ๋งํฌ๋ ๋ฆฌ์คํธ๋ก ๊ตฌํ์ ํ๋ค๋ฉด ์ด๋ค ๊ฑธ ๋ฉ๋ก ๊ตฌํํ๋ฉด ์ข์๊น.
๋ฌผ๋ก ๋ฐฐ์ด์ด๋ ๋งํฌ๋ ๋ฆฌ์คํธ ๋ ๋ค ๊ตฌํ์ ๊ฐ๋ฅํ๋ค.
ํจ์จ์ ๋ฐ์ก์ ๋ ์คํ์ LIFO๊ตฌ์กฐ๋ ๋ฐฐ์ด๋ก ๊ตฌํํ๊ธฐ ์ข๋ค.
๋ฐฐ์ด์ ์์ฐจ์ ์ถ๊ฐ์ ์์ฐจ์ ์ญ์ ๋ฐฉ์์ ์คํ์ LIFO๊ตฌ์กฐ๋ฅผ ๊ตฌํํ๊ธฐ ์ข๋ค.
๋ฐ๋๋ก ํ์ FIFO๊ตฌ์กฐ๋ ๋งํฌ๋ ๋ฆฌ์คํธ๋ก ๊ตฌํํ๊ธฐ ์ข๋ค.
๋งํฌ๋ ๋ฆฌ์คํธ๋ ์์์๋ถํฐ ์ญ์ ๋ฅผ ํ๋๋ผ๋ ์ฐธ์กฐ ๋ณ์๋ง ๋ณ๊ฒฝํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ํ๋ฅผ ๊ตฌํํ๊ธฐ ์ข๋ค.
์คํ๊ณผ ํ์ ๋ฉ์๋
์คํ์ ํด๋์ค์ด๋ค.
์คํ์ ์ฌ์ฉํ ๋๋ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
โถ Stack st = new Stack();
ํ์ง๋ง ํ๋ ์ธํฐํ์ด์ค์ด๋ค.
๊ทธ๋์ ๊ฐ์ฒด๋ฅผ ๋ฐ๋ก ์์ฑํ ์ ์๋ค.
๊ทธ๋ ๊ธฐ์ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๊ฐ ์๋ค. Queue๋ฅผ ์ง์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ๊ณผ Queue๋ฅผ ๊ตฌํํ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค.
Queue๋ฅผ ์ฌ์ฉํ๊ธฐ์๋ ํ๋ฅผ ๊ตฌํํ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํธํ๋ค.
๊ทธ๋ ๊ฒ Java API์ Queue๋ฅผ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
API๋ฌธ์์์ Queue๋ฅผ ๊ตฌํํ ํด๋์ค๋ฅผ ๋ณด๋ LinkedList๊ฐ ์๋ ๊ฑธ ํ์ธํ ์ ์๋ค.
Queue g = new LinkedList();
ํ๋ฅผ ์ฌ์ฉํ ๋๋ ์ด๋ ๊ฒ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด ๋๋ค.
๋ฌผ๋ก ์ฐธ์กฐ ๋ณ์๋ฅผ Queue๊ฐ ์๋ LinkedList๋ฅผ ์ฌ์ฉํด๋ ๋ฌด๊ดํ์ง๋ง,
Queue๋ฅผ ์ฌ์ฉํ๋ฉด Queue์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ์ด๋ค ํด๋์ค๋ก๋ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค.
์คํ์ ํ์ฉ ์ - ์์๊ณ์ฐ, ์์ ๊ดํธ ๊ฒ์ฌ, ์๋ํ๋ก์ธ์์ undo/redo,
์น๋ธ๋ผ์ฐ์ ์ ๋ค๋ก/์์ผ๋ก
ํ์ ํ์ฉ ์ - ์ต๊ทผ ์ฌ์ฉ ๋ฌธ์, ์ธ์ ์์ ๋๊ธฐ๋ชฉ๋ก, ๋ฒํผ(buffer)
'๐จ๏ธ Language > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ์ปฌ๋ ์ ํ๋ ์์ (5) - HashSet, TreeSet (0) | 2022.12.13 |
---|---|
[Java]์ปฌ๋ ์ ํ๋ ์์ (4) - ์ปฌ๋ ์ ์ ๊ทผ ์ธํฐํ์ด์ค, Arrays, Comparator์ Comparable (0) | 2022.12.05 |
[Java]์ปฌ๋ ์ ํ๋ ์์ (2) - ArrayList, LinkedList (1) | 2022.11.28 |
[Java]์ปฌ๋ ์ ํ๋ ์์ (collections framework) (0) | 2022.11.28 |
[Java]ํ์ํ ํด๋์ค (1) | 2022.11.27 |