โ๊ณต๋ถํ๊ฒ ๋ ๊ณ๊ธฐ
ํ๋ก๊ทธ๋๋จธ์ค ์คํ & ํ ํํธ๋ฅผ ํ๊ธฐ ์ ๊ฐ๋ ์ ํ์ธ
โ๏ธ๊ณต๋ถํ ๋ด์ฉ
1๏ธโฃ Stack
โ ์ ์ธ
โก๏ธ Class ์ด๋ฏ๋ก ์์ฑ์๋ฅผ ํตํด ๋ฐ๋ก ๊ฐ์ฒด ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
// Stack ์ ์ธ
Stack<(์๋ฃํ)> stack = new Stack<>();
โก ๊ตฌ์กฐ
โก๏ธ ๋ฐ๋ฅ์ด ๋งํ์๋ ์์๋ฅผ ์๊ฐํ๋ฉด ๊ฐ๋จํ๋ค. ๋จผ์ ๋ฃ์ ๋ฌผ๊ฑด์ด ๋งจ ์๋์ ์๊ณ ์ต๊ทผ์ ๋ฃ์ ๋ฌผ๊ฑด์ผ ์๋ก ์์ ์๋ค. ๋ฐ๋ผ์ ๊บผ๋ผ ๋๋ ๋ง์ง๋ง์ ๋ฃ์ ๋ฌผ๊ฑด์ ๋จผ์ ๊บผ๋ด๊ฒ ๋๋ค. ์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ LIFO (Last In First Out) ๊ตฌ์กฐ๋ผ๊ณ ํ๋ค.

โข ๊ตฌํ
โก๏ธ ๊ตฌํ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋ฐฐ์ด๊ณผ ๋งํฌ๋๋ฆฌ์คํธ (LinkedList) ๋ฅผ ๊ณ ๋ คํ ์ ์๋๋ฐ, ์์์ ์ธ๊ธํ Stack ์ LIFO ๊ตฌ์กฐ ํน์ฑ์ ๋ค์์ ๋ถํฐ ํ๋์ฉ ์ง์๋๊ฐ๋ฉด ๋๋ ๋ฐฐ์ด์ด ์ ํฉํ๋ค.

โฃ ๋ฉ์๋ (Method)

โก๏ธ return ํ์ ์ด Object ์ด๋ฉด์ Exception ์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ์๋ try-catch ๋ฌธ์ ํ์ฉํ์ฌ ์์ธ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
โก๏ธ search ๋ฉ์๋์ ๊ฒฝ์ฐ return ํ์ ์ด int ๋ก Stack ์์์ ์์น๋ฅผ ์๋ฏธํ๋๋ฐ ๋ฐฐ์ด์์์ index ๊ฐ 0 ์์ ์์ํ๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ Stack ์ 1๋ถํฐ ์์ํจ์ ์ ์ํด์ผํ๋ค.
2๏ธโฃ Queue
โ ์ ์ธ
โก๏ธ ์ธํฐํ์ด์ค๋ก ์์ฑ์๋ฅผ ํตํด ๋ฐ๋ก ๊ฐ์ฒด ์์ฑ์ด ๋ถ๊ฐ๋ฅํ๋ค. ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค๋ฅผ ํตํด ์์ฑํด์ฃผ์ด์ผ ํ๋ค.
// Queue ์ ์ ์ธ
Queue<(์๋ฃํ)> queue = new LinkedList<>();
Queue ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค๋ค์ ์๋ ๋งํฌ์ ๋ ํผ๋ฐ์ค ๋ด์ฉ ์ค Alll Known Implementing Classes ๋ฅผ ํ์ธํ๋ฉด ํ ์ ์๋ค.
Stack (Java SE 11 & JDK 11 )
docs.oracle.com

โก ๊ตฌ์กฐ
โก๏ธ ์์์ ๊ตฌ์กฐ๋ฅผ ์๊ฐํ๋ Stack ๊ณผ ๋ฌ๋ฆฌ ๋งํ์๋ ์๋๊ฐ ๋ซ๋ ค์๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์์์ ๋ฃ๊ณ ์๋์ ๋นผ๋ ๊ตฌ์กฐ๋ก ๋จผ์ ๋ค์ด๊ฐ๋ค๋ฉด ๋จผ์ ๋์ค๊ฒ ๋๊ณ , ์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ FIFO (First In First Out) ๊ตฌ์กฐ๋ผ๊ณ ํ๋ค.

โข ๊ตฌํ
โก๏ธ ์์์ ์ธ๊ธํ ๊ฒ๊ณผ ๊ฐ์ด ๋ฐฐ์ด๊ณผ ๋งํฌ๋ฆฌ์คํธ๋ฅผ ๊ณ ๋ คํด๋ณผ ์ ์๋๋ฐ ์ฌ๊ธฐ์๋ ๋ฐฐ์ด์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์์์ ์ญ์ ํ๋ฉด ๋น์์ง ์๋ฆฌ๋ฅผ ๋ค์์ ํ๋์ฉ ์ฑ์์ค์ผํจ์ผ๋ก ๋นํจ์จ์ ์ด๋ค. ๋ฐ๋ผ์ ๋จ์ํ ์์์ ์ฐ๊ฒฐ์ ๋๋ ๋งํฌ๋๋ฆฌ์คํธ๊ฐ ์ ํฉํ๋ค.


โฃ ๋ฉ์๋ (Method)

โก๏ธ return ํ์ ์ด Object ์ด๋ฉด์ Exception ์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ์๋ try-catch ๋ฌธ์ ํ์ฉํ์ฌ ์์ธ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
โก๏ธ return ํ์ ์ด Object ์ด๋ฉด์ null ์ ๋ฐํํ๋ ๊ฒฝ์ฐ๋ if (Obj == null) ์กฐ๊ฑด๋ฌธ์ ํ์ฉํ์ฌ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
โ๏ธ ์ ์ฉ ์์ผ๋ณธ ์์
(์๊ณ ๋ฆฌ์ฆ ์คํฐ๋) 3์ฃผ์ฐจ ์ _ ์คํ&ํ๐ฆ _ (Programmers) ํ๋ฆฐํฐ
๐ ํ๋ก๊ทธ๋๋จธ์ค / ์คํ&ํ / Level2 / ํ๋ฆฐํฐ ๐ ๋ฌธ์ ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์
like099.tistory.com
(์๊ณ ๋ฆฌ์ฆ ์คํฐ๋) 3์ฃผ์ฐจ ์ _ ์คํ&ํ๐ฆ _ (Programmers) ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ
๐ ํ๋ก๊ทธ๋๋จธ์ค / ์คํ&ํ / Level2 / ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ ๐ ๋ฌธ์ ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ
like099.tistory.com
(์๊ณ ๋ฆฌ์ฆ ์คํฐ๋) 3์ฃผ์ฐจ ์ _ ์คํ&ํ๐ฆ _ (Programmers) ์ฌ๋ฐ๋ฅธ ๊ดํธ
๐ ํ๋ก๊ทธ๋๋จธ์ค / ์คํ&ํ / Level2 / ์ฌ๋ฐ๋ฅธ ๊ดํธ ๐ ๋ฌธ์ ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ
like099.tistory.com
๐ง ์ถ๊ฐ๋ก ๊ถ๊ธํ ์
1๏ธโฃ Queue ๊ฐ์ฒด ์์ฑ ๋ฐฉ์
// Queue ์ ์ ์ธ
// ๋ฐฉ๋ฒ (1)
Queue<(์๋ฃํ)> queue = new LinkedList<>();
// ๋ฐฉ๋ฒ (2)
LinkedList<(์๋ฃํ)> queue = new LinkedList<>();
๋ฐฉ๋ฒ(2) ์ ์ ์ธ ๋ฐฉ์๋ ๊ฐ๋ฅํ๋ฐ ๋ฐฉ๋ฒ(1)์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ด์ .
โก๏ธ ๊ฐ์ฒด ์์ฑ ํ ๋ค์ํ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ๋ฐ Queue ๊ฐ์ฒด๋ก ์์ฑ ์ Queue ์ธํฐํ์ด์ค ๋ด์ ๋ฉ์๋๋ก๋ง ์ฌ์ฉ๊ฐ๋ฅํ ๊ฒ์ด๋ค. ํ์ง๋ง LinkedList ๊ฐ์ฒด๋ก ์์ฑ ์ Queue ์ธํฐํ์ด์ค ๋ด์ ๋ฉ์๋ ์ธ์๋ ๋ค์ํ ๋ฉ์๋๋ค์ ํ์ฉ๊ฐ๋ฅํ๋ค.
์๋ฅผ ๋ค์ด LinkedList ํด๋์ค ์์๋ removeFirst() ๋ผ๋ ๋ฉ์๋๊ฐ ์๋๋ฐ,
// ๋ฐฉ๋ฒ (1) ๋ก ์ ์ธํ ๊ฒฝ์ฐ
Queue<Integer> q = new LinkedList<>();
q.removeFisrt(); // ์ฌ์ฉ๋ถ๊ฐ(์ค๋ฅ๋ฐ์)
// ๋ฐฉ๋ฒ (2) ๋ก ์ ์ธํ ๊ฒฝ์ฐ
LinkedList<Integer> ll = new LinkedList<>();
ll.removeFirst(); // ์ฌ์ฉ๊ฐ๋ฅ
์ ์์์ ๊ฐ์ด Queue ๊ฐ์ฒด๋ผ๋ฉด ํด๋น ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๊ณ , LinkedList ๊ฐ์ฒด๋ผ๋ฉด ๋น์ฐํ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒ์ด๋ค.
โก๏ธ ๋ง์ฝ LinkedList ํด๋์ค์ ๋ค์ํ ํจ์๋ฅผ ํ์ฉํ๊ณ ์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ฉด LinkedList ๊ฐ์ฒด๋ก ์์ฑํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ง์ง๋ง Queue ์ฌ์ฉ์ด ๋ชฉ์ ์ด๋ผ๋ฉด ์กฐ์ ์ธํฐํ์ด์ค๋ก ์ขํ์ฃผ๋ ๊ฒ์ด ์ค๋ฅ๋ฅผ ์๋ฐฉํ๋ ์ฐจ์์์ ์ข์ ๊ฒ ์ด๋ค. ๋, LinkedList ๋ง๊ณ ๋ Queue ๋ฅผ ๊ตฌํํ ๋ค์ํ ํด๋์ค๊ฐ ์์ผ๋ฏ๋ก ์ฝ๊ฒ ๋ฐ๊ฟ ์๋ ์๋ค.
// Queue ๊ฐ์ฒด๋ก ์์ฑํ๊ฒฝ์ฐ
Queue<Integer> q = new LinkedList<>(); // ๊ฐ๋ฅ
Queue<Integer> q = new ArrayDeque<>(); // ๊ฐ๋ฅ
q.revmove();
q.element();
๐ ์ฐธ๊ณ
โ ์๋ฐ์ ์ ์ ๊ธฐ์ดํธ Ch11-15 ์์ฝ ์์ : https://www.youtube.com/watch?v=ktvhRSRohR4
'Java ๐งธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ํด์ (Hash) (0) | 2023.01.07 |
|---|---|
| (Java) ์ฝ์์ ๋ ฅ๋ค์ ์ข ๋ฅ์ ๋น๊ต (InputStream, InputStreamReader, BufferedReader, Scanner) (0) | 2022.10.11 |
| (Java) ๋ฉ์๋_Method (0) | 2022.10.06 |
| (Java) ๊ณต๋ถ์ ๋ชฉ์ (2) | 2022.10.06 |