cTosMaster 2025. 5. 4. 14:07

1. Stack 이란?

 

2. Stack의 활용(with Java)

    * isEmpty() : 배열이 비어 있는지 확인 (top == -1 인지 조건검사)

    * isFull() : 배열이 꽉차 있는지 확인 (top == length-1 인지 조건검사) 

    * peek() : 현재 위치(맨위)의 데이터를 조회만 함. 

    * pop() : 현재 위치(맨위)의 데이터를 조회한 후 리턴하고 삭제하며, top을 한칸 내린다.

    * push() : 현재 스택이 꽉차 있는지 검사한 후, 아니라면 top을 한칸 올리고 해당 내용을 추가한다.

import java.util.Stack;

public class StackWithJava {

	public static void main(String[] args) {
		String str1 = "(MyNames Jaybee)";
		String str2 = "[MyNames Jaybee)";
		String str3 = "Jaybee is back)";
		String str4 = "(Jaybee is back";
		String str5 = "Jaybee is back";
		
		System.out.println(isValid(str1));
		System.out.println(isValid(str2));
		System.out.println(isValid(str3));
		System.out.println(isValid(str4));
		System.out.println(isValid(str5));
	
	}
	
	public static boolean isValid(String str) {
		Stack<Character> st = new Stack<>();
		
		for(char ch : str.toCharArray()) {
			if(ch == '(') st.push(')');
			else if(ch == '{') st.push('}');
			else if(ch == '[') st.push(']');
			else if(ch != ')' && ch != ']' && ch != '}') continue;
			else if(st.isEmpty() || st.pop() != ch) return false;
		}
		return st.isEmpty();
	}
}

 

활용되는 주요 알고리즘

-> DFS (재귀를 사용함)