Deep_Dev
article thumbnail

โœ… Stack

Stack = '์Œ“๋‹ค' , '๋”๋ฏธ'

์ฆ‰, ์ƒ์ž์— ๋ฌผ๊ฑด์„ ์Œ“์•„ ์˜ฌ๋ฆฌ๋“ฏ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์Œ“๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ๋‚˜์ค‘์— ๋“ค์–ด๊ฐ„๊ฒƒ์ด ๋จผ์ € ๋‚˜์˜ค๋Š” ( Last In First Out )์˜ ํ˜•ํƒœ๋ฅผ ๋œฌ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

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

์‚ฌ์šฉ์‹œ import java.util.Stack ์„ ์ž„ํฌํŠธํ•ด์•ผํ•œ๋‹ค.

 

 

 

Stack์˜ ํŠน์ง•

1. ๋จผ์ € ๋“ค์–ด๊ฐ„ ์ž๋ฃŒ๊ฐ€ ๋‚˜์ค‘์— ๋‚˜์˜ด ( LIFO ) 

2. ์‹œ์Šคํ…œ ํ•ดํ‚น์—์„œ ๋ฒ„ํผํ”Œ๋กœ์šฐ ์ทจ์•ฝ์ ์„ ์ด์šฉํ•œ ๊ณต๊ฒฉ์„ ํ•  ๋•Œ ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ์˜์—ญ์—์„œ ํ•จ

3. ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ, ์ˆ˜์‹์˜ ๊ณ„์‚ฐ, ์„œ๋ธŒ๋ฃจํ‹ด์˜ ๋ณต๊ท€ ๋ฒˆ์ง€ ์ €์žฅ ๋“ฑ์— ์“ฐ์ž„

4. ๊ทธ๋ž˜ํ”„์˜ ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS)์—์„œ ์‚ฌ์šฉ

5. ์žฌ๊ท€์ (Recursion) ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉ

 

Stack ์‚ฌ์šฉ๋ฒ•

Stack ์„ ์–ธ

import java.util.Stack;
Stack<Integer> stack = new Stack<>(); // intํ˜• ์Šคํƒ ์„ ์–ธ
Stack<String> stack = newStack<>(); // charํ˜• ์Šคํƒ ์„ ์–ธ

 

Stack ๊ฐ’ ์ถ”๊ฐ€

Stack<Integer> stack=new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);

Stack์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด push(value)๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉ.

Stack์— ์œ„ ์˜ˆ์ œ์™€ ๊ฐ™์ด ๊ฐ’์„ ๊ณ„์†ํ•ด์„œ ์ถ”๊ฐœํ•˜๋‚˜๊ฐ€๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์ด๊ฒŒ ๋œ๋‹ค.

 

Stack ๊ฐ’ ์‚ญ์ œ

Stack<Integer> stack=new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.pop(); // stack์— ๊ฐ’ ์ œ๊ฑฐ
stack.clear(); // stack์˜ ์ „์ฒด ๊ฐ’ ์ œ๊ฑฐ (์ดˆ๊ธฐํ™”)

์Šคํƒ์—์„œ ๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด pop()๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ.

pop์„ ํ•˜๋ฉด ๊ฐ€์žฅ ์œ„์ชฝ์— ์žˆ๋Š” ์›์†Œ์˜ ๊ฐ’์ด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ œ๊ฑฐ๋œ๋‹ค.  

์Šคํƒ์˜ ๊ฐ’์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด clear()๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ

 

 

Stack์˜ ๊ฐ€์žฅ ์ƒ๋‹จ ๊ฐ’ ์ถœ๋ ฅ

Stack<Integer> stack=new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.peek(); // stack์˜ ๊ฐ€์žฅ ์ƒ๋‹จ ๊ฐ’ ์ถœ๋ ฅ

์Šคํƒ์˜ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด peek() ์‚ฌ์šฉ

์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋“ค์–ด๊ฐ„ ๊ฐ’์ด ์ถœ๋ ฅ๋œ๋‹ค.

 

 

 

Stack์˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฉ”์†Œ๋“œ

Stack<Integer> stack=new Stack<>();
stack.push(1);
stack.push(2);
stack.size(); // stack์˜ ํฌ๊ธฐ ์ถœ๋ ฅ : 2
stack.empty(); // stack์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ ( ๋น„์–ด์žˆ๋‹ค๋ฉด true )
stack.contains(1) // stack์— 1์ด ์žˆ๋Š”์ง€ ํ™•์ธ ( ์žˆ๋‹ค๋ฉด true )