๐๐ป ์๋ฃ๊ตฌ์กฐ
- ์ฌ๋ฌ ๋ฐ์ดํฐ์ ๋ฌถ์์ ์ ์ฅํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ ๊ฒ
- ์ํฉ๋ง๋ค ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ค๋ฃฐ ์ ์์ด ํน์ ํ ์ํฉ์ ๋์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ํนํ
๐ก ๋ฐ์ดํฐ ?
- ๋ฌธ์, ์ซ์, ์๋ฆฌ, ๊ทธ๋ฆผ, ์์ ๋ฑ ์ค์ํ์ ๊ตฌ์ฑํ๊ณ ์๋ ๋ชจ๋ ๊ฐ
- ๋ฐ์ดํฐ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ ๋ฆฌํ์ฌ ์ ์ฅํด๋๋ ๊ฒ์ ๋ฐ์ดํฐ ํ์ฉ์ ์ ๋ฆฌํจ
๐ Stack ์คํ
Stack<Integer> stack = new Stack<>();
- ๋ฐ์ดํฐ๋ฅผ ์์๋๋ก ์๋ ๊ตฌ์กฐ
- ๊ฐ์์นฉ ํต์ด Stack, ๊ฐ์์นฉ์ ๋ฐ์ดํฐ๋ก ๋น์ ํ ์ ์์
- ๊ฐ์ฅ ๋จผ์ ๋ค์ด๊ฐ ์ฒซ ๋ฒ์งธ ๊ฐ์์นฉ์ ๊ฐ์ฅ ๋์ค์ ๋์ค๋ฉฐ, ๊ฐ์ฅ ๋์ค์ ๋ค์ด๊ฐ ์ธ ๋ฒ์งธ ๊ฐ์์นฉ์ด ๊ฐ์ฅ ๋จผ์ ๋์ด = LIFO
- ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ด ํ๋์ ๋ฐฉํฅ์ผ๋ก ์ด๋ฃจ์ด์ง๋ ์ ํ์ ์ ๊ทผ
- ๊ฐ์์นฉ์ ๋ฃ๋ ๊ฒ, ์ฆ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ฒ์ PUSH ๋ผ๊ณ ํจ
- ๊ฐ์์นฉ์ ๊บผ๋ด ๋จน๋ ๊ฒ, ์ฆ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๋ ๊ฒ์ POP ์ด๋ผ๊ณ ํจ
โช๏ธ Stack์ ํน์ง
โ LIFO ( Last In First Out )
- ๋จผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๋ ์ ์ผ ๋์ค์ ๋์ค๋ ํ์ ์ ์ถ์ ๊ตฌ์กฐ
stack.push(4);
stack.push(3);
stack.push(2);
stack.push(1);
→ ๋ฐ์ดํฐ๋ ์คํ ์์ 1๏ธโฃ
2๏ธโฃ
3๏ธโฃ
4๏ธโฃ ์ฒ๋ผ ๋ด๊น
stack.pop();
stack.pop();
stack.pop();
stack.pop();
→ ๋ฐ์ดํฐ๊ฐ ๋์ฌ ๋๋ 1 ๋ถํฐ ๋์ค๊ธฐ ์์ : 1๏ธโฃ→2๏ธโฃ→3๏ธโฃ→4๏ธโฃ
โก ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ๋ง ๋ฃ๊ณ ๋บ ์ ์์
โข ํ๋์ ์ ์ถ๋ ฅ ๋ฐฉํฅ์ ๊ฐ์ง
โช๏ธ Stack ๋ฉ์๋
โ push( )
- ์คํ์ ๋ฐ์ดํฐ ์ถ๊ฐ
โก pop( )
- ๊ฐ์ฅ ๋์ค์ ์ถ๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์คํ์์ ์ญ์ ํ๊ณ ์ญ์ ํ ๋ฐ์ดํฐ ๋ฆฌํด
โข size( )
- ์คํ์ ์๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ ๋ฆฌํด
โฃ peek( )
- ๊ฐ์ฅ ๋์ค์ ์ถ๊ฐ๋ ๋ฐ์ดํฐ ์กฐํ
โค show( )
- ํ์ฌ ์คํ์ ํฌํจ๋์ด ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ String ํ์ ์ผ๋ก ๋ณํํ์ฌ ๋ฆฌํด
โฅ clear( )
- ํ์ฌ ์คํ์ ํฌํจ๋์ด ์๋ ๋ชจ๋ ๋ฐ์ดํฐ ์ญ์
โฆ empty( )
- ์คํ์ด ๋น์ด์๋์ง ์ฌ๋ถ๋ฅผ ํ๋จํ ๋ ์ฌ์ฉ
โช๏ธ Stack ๊ตฌํ์ ๋ฐฐ์ด / ๋งํฌ๋ ๋ฆฌ์คํธ ๊ตฌํ
1๏ธโฃ ๋ฐฐ์ด
- ์ฅ์ : ๊ตฌํ์ด ์ฝ๊ณ ๋ฐ์ดํฐ ์ ๊ทผ ์๋(์กฐํ) ๋น ๋ฆ
- ๋จ์ : ์ต๋ ๊ฐ์๋ฅผ ์ ํด์ผ๋ง ์ฌ์ฉ ๊ฐ๋ฅ
2๏ธโฃ ๋งํฌ๋ ๋ฆฌ์คํธ
- ์ฅ์ : ๋ฐ์ดํฐ์ ์ต๋ ๊ฐ์๊ฐ ํ์ ๋์ง ์์ผ๋ฉฐ ์ฝ์ , ์ญ์ ๊ฐ ์ฉ์ด
- ๋จ์ : ์กฐํ๊ฐ ํ๋ฌ (๋ ธ๋๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉฐ ์กฐํํ๊ฐ ๋๋ฌธ)
๐ Queue ํ
Queue<Integer> queue = new LinkedList<>();
- ์ ์ ์ ์ถ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ ๊ตฌ์กฐ
- ๋นจ๋๋ฅผ ์์๋ก ๋ค์ด๋ณด๋ฉด ๋นจ๋๋ ํ, ๋ฒ๋ธํฐ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธ
- ๊ฐ ์ฅ์น ์ฌ์ด์ ์๋ ๋ฐ ์๊ฐ ์ฐจ์ด๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ์์๊ธฐ์ต ์ฅ์น์ ์๋ฃ๊ตฌ์กฐ๋ก ์ฌ์ฉ = buffer
- ๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๋ ๋จผ์ ๋๊ฐ๋ FIFO, LILO์ ํน์ง
- ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ๋ฐฉํฅ์ด ๊ณ ์ ๋์ด ์์ผ๋ฉฐ ๋ ๊ณณ์ ์ ๊ทผ ๊ฐ๋ฅ
- ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ฒ์ enqueue, ๊บผ๋ด๋ ๊ฒ์ dequeue
โช๏ธ Queue ์ ํน์ง
โ FIFO ( First In First Out )
- ๋จผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๋ ์ ์ผ ์ฒ์์ผ๋ก ๋์ด
queue.add(4);
queue.add(3);
queue.add(2);
queue.add(1);
→ ๋ฐ์ดํฐ๋ ํ ์์ | 1๏ธโฃ |
| 2๏ธโฃ |
| 3๏ธโฃ |
| 4๏ธโฃ | ์ฒ๋ผ ๋ด๊น
queue.poll();
queue.poll();
queue.poll();
queue.poll();
→ ๋ฐ์ดํฐ๊ฐ ๋์ฌ ๋๋ ๋จผ์ ๋ค์ด๊ฐ 4 ๋ถํฐ ๋์ค๊ธฐ ์์ : 4๏ธโฃ→3๏ธโฃ→2๏ธโฃ→1๏ธโฃ
โก ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ๋ง ๋ฃ๊ณ ๋บ ์ ์์
โข ๋ ๊ฐ์ ์ ์ถ๋ ฅ ๋ฐฉํฅ์ ๊ฐ์ง
๐ก ์ปดํจํฐ์ ํ๋ฆฐํฐ ์ฌ์ด์ ๋ฐ์ดํฐ ํต์
โช๏ธ Queue ๋ฉ์๋
โ add( )
- ํ์ ๋ฐ์ดํฐ ์ถ๊ฐ
โก poll( )
- ๊ฐ์ฅ ๋จผ์ ์ถ๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ํ์์ ์ญ์ ํ๊ณ ์ญ์ ํ ๋ฐ์ดํฐ ๋ฆฌํด
โข size( )
- ํ์ ์๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ ๋ฆฌํด
โฃ peek( )
- ๊ฐ์ฅ ๋จผ์ ์ถ๊ฐ๋ ๋ฐ์ดํฐ ์กฐํ
โค show( )
- ํ์ฌ ํ์ ํฌํจ๋์ด ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ String ํ์ ์ผ๋ก ๋ณํํ์ฌ ๋ฆฌํด
โฅ clear( )
- ํ์ ํฌํจ๋์ด ์๋ ๋ชจ๋ ๋ฐ์ดํฐ ์ญ์
โช๏ธ Queue ๊ตฌํ
โ ์์ฐจ ํ
- ๋ฐฐ์ด๋ก ํ๋ฅผ ๊ตฌํํ ๊ฒ
- ํฌ๊ธฐ๊ฐ ์ ํ๋์ด ์๊ณ ๋น ๊ณต๊ฐ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ชจ๋ ์๋ฃ๋ฅผ ๊บผ๋ด๊ฑฐ๋ ์๋ฃ๋ฅผ ํ ์นธ์ฉ ์ฎ๊ฒจ์ผ ํจ
โก ์ํ ํ
- ์ฒซ๋ฒ์งธ ์์๊ฐ ํ์ ๋์ ๋ฟ์ผ๋ฉด ํ์ ๋งจ ์์ผ๋ก ์๋ฃ๋ฅผ ๋ณด๋ด์ด ์ํ์ผ๋ก ์ฐ๊ฒฐ
- ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ํ์ฉํ์ง๋ง ๋ฐฐ์ด๋ก ๊ตฌํ๋์ด ์๊ธฐ ๋๋ฌธ์ ํ ํฌ๊ธฐ ์ ์ฝ
โข ๋งํฌ๋ ๋ฆฌ์คํธ ํ
- ํ์ ๋จ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ์
- ํฌ๊ธฐ ์ ํ์ด ์๊ณ ๋ฏธ๋ฆฌ ์ ํ์ง ์์๋ ๋์ด ์ฝ์ ์ญ์ ๊ฐ ํธ๋ฆฌํจ
- ํ์ ๊ธธ์ด๋ฅผ ๋๋ฆด ์ ์์ด ์ค๋ฒ ํ๋ก์ฐ๊ฐ ๋ฐ์ํ์ง ์์
'Study > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] ์ฝ๋ฉํ ์คํธ (0) | 2022.05.31 |
---|---|
[TIL] ์๋ฃ๊ตฌ์กฐ : ํธ๋ฆฌ, ๊ทธ๋ํ, ์ด์งํ์ํธ๋ฆฌ (0) | 2022.05.29 |
[TIL] ์ฌ๊ทํจ์ (0) | 2022.05.24 |
[TIL] ์๋ฐ ๊ฐ์ ๋จธ์ (0) | 2022.05.22 |
[TIL] ์ค๋ ๋ (0) | 2022.05.22 |