๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ์–ธ์–ด/JAVA

[Java] Stack ํด๋ž˜์Šค ์„ค๋ช… ๋ฐ ์˜ˆ์ œ

by yunamom 2022. 4. 23.
728x90
300x250

โœจStack ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”? 

์Šคํƒ(stack)์€ ์ œํ•œ์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋‚˜์—ด ๊ตฌ์กฐ์ด๋‹ค. ์‚ฌ์ „์  ์ •์˜๋Š” '์Œ“๋‹ค' ์ƒ์ž์— ๋ฌผ๊ฑด์„ ์Œ“์•„ ์˜ฌ๋ฆฌ๋“ฏ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์Œ“๋Š” ๊ตฌ์กฐ๋กœ ๊ทธ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์€ ์–ธ์ œ๋‚˜ ๋ชฉ๋ก์˜ ๋์—์„œ๋งŒ ์ผ์–ด๋‚œ๋‹ค. 

์ž๋ฃŒ๋ฅผ ๋„ฃ๋Š”๊ฒƒ์„ '๋ฐ€์–ด๋„ฃ๋Š”๋‹ค' ํ•˜์—ฌ push๋ผ๊ณ  ํ•˜๊ณ  ๋ฐ˜๋Œ€๋กœ ๋„ฃ์–ด๋‘” ์ž๋ฃŒ๋ฅผ ๊บผ๋‚ด๋Š” ๊ฒƒ์„ pop์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ด๋•Œ ๊บผ๋‚ด์ง€๋Š” ์ž๋ฃŒ๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ์— ํ‘ธ์‰ฌํ•œ ์ž๋ฃŒ๋ถ€ํ„ฐ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ๋‚˜์ค‘์— ๋“ค์–ด๊ฐ„ ๊ฒƒ์ด ๋จผ์ € ๋‚˜์˜ค๋Š” LIFO(Last In First Out)์˜ ํ˜•ํƒœ๋ฅผ ๋„๊ณ ์žˆ๋‹ค.

 

โœจStack ์„ ์–ธ 

import java.util.Stack;

Stack<Integer>stack = new Stack<Integer>(); // Integerํƒ€์ž… ์„ ์–ธ
Stack<Integer>stack = new Stack<>(); // ๋’ค์˜ ํƒ€์ž… ์ƒ๋žต ๊ฐ€๋Šฅ
Stack<Character>stack = new Stack<>(); // Char ํƒ€์ž… ์„ ์–ธ
Stack<String>stack = new Stack<>(); // String ํƒ€์ž… ์„ ์–ธ
๋ฉ”์„œ๋“œ ์„ค๋ช…
stack.push(1); ์Šคํƒ์— ๊ฐ’ 1 ์ถ”๊ฐ€
stack.size(); ์Šคํƒ์˜ ํฌ๊ธฐ ์ถœ๋ ฅ
stack.empty(); ์Šคํƒ์ด ๋น„์–ด ์žˆ์œผ๋ฉด true, ๋น„์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜
stack.peek(); ์Šคํƒ์˜ ์ œ์ผ ์ƒ๋‹จ์— ์žˆ๋Š”(๋งˆ์ง€๋ง‰์œผ๋กœ ์ €์žฅ๋œ) ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜
stack.pop(); ์Šคํƒ์˜ ์ œ์ผ ์ƒ๋‹จ์— ์žˆ๋Š”(๋งˆ์ง€๋ง‰์œผ๋กœ ์ €์žฅ๋œ) ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ›„,
ํ•ด๋‹น ์š”์†Œ๋ฅผ ์Šคํƒ์—์„œ ์ œ๊ฑฐํ•จ. (๊ฐ’์„ remove ํ• ๋•Œ pop ์„ ์‚ฌ์šฉํ•˜๋ฉด๋œ๋‹ค.)
stack.search(1); ์Šคํƒ์—์„œ ์ „๋‹ฌ๋œ ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜๋Š” ์œ„์น˜์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜
์ด๋•Œ ์ธ๋ฑ์Šค๋Š” ์ œ์ผ ์ƒ๋‹จ์— ์žˆ๋Š”(๋งˆ์ง€๋ง‰์œผ๋กœ ์ €์žฅ๋œ) ์š”์†Œ์˜ ์œ„์น˜๋ถ€ํ„ฐ 0์ด ์•„๋‹Œ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•จ.
stack.contains(1); ์Šคํƒ์— 1์ด ์žˆ์œผ๋ฉด true, ์—†์œผ๋ฉด false ๋ฅผ ๋ฐ˜ํ™˜

โœจStack ์˜ˆ์ œ 

import java.util.Stack;

public class Solution {
	
	public static void main (String[] args) {
		
		Stack<Integer>stack = new Stack<>();
		// ๊ฐ’๋„ฃ๊ธฐ
		stack.push(1);
		stack.push(2);
		stack.push(3);
		stack.push(4);
		
		// ์Šคํƒ ํฌ๊ธฐ ์ถœ๋ ฅ
		System.out.println(stack.size()); // 4
		
		// ๋น„์–ด ์žˆ์œผ๋ฉด true, ๋น„์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด false
		System.out.println(stack.empty()); // false
		
		// ๋งˆ์ง€๋ง‰์œผ๋กœ ์ €์žฅ๋œ ์š”์†Œ ๋ฐ˜ํ™˜
		System.out.println(stack.peek()); // 4
		System.out.println(stack); // [1, 2, 3, 4]
		
		// ๋งˆ์ง€๋ง‰์œผ๋กœ ์ €์žฅ๋œ ์š”์†Œ ๋ฐ˜ํ™˜ํ›„ ํ•ด๋‹น์š”์†Œ ์ œ๊ฑฐ
		System.out.println(stack.pop()); // 4
		System.out.println(stack); // [1, 2, 3]
		
		/*
		์Šคํƒ์—์„œ ์ „๋‹ฌ๋œ ๊ฐ’์ด ์กด์žฌํ•˜๋Š” ์œ„์น˜์˜ ์ธ๋ฑ์Šค ๋ฐ˜ํ™˜ 
		(๋งˆ์ง€๋ง‰์œผ๋กœ ์ €์žฅ๋œ ์š”์†Œ์˜ ์œ„์น˜์—์„œ 0์ด ์•„๋‹Œ 1๋ถ€ํ„ฐ ์‹œ์ž‘) ๊ฐ’์ด ์—†์œผ๋ฉด -1 ๋ฐ˜ํ™˜
		*/
		System.out.println(stack.search(4)); // -1
		System.out.println(stack.search(3)); // 1
		System.out.println(stack.search(2)); // 2
		
		// ์Šคํƒ์— ์ „๋‹ฌ๋œ ๊ฐ’์ด ์žˆ์œผ๋ฉด true, ์—†์œผ๋ฉด false
		System.out.println(stack.contains(4)); // false
		System.out.println(stack.contains(3)); // true
	}
}

 

728x90
300x250

์ฝ”๋“œ