import java.util.Stack;

class Solution {
    boolean solution(String s) {
        boolean answer = true;
        Stack<Character> mystack = new Stack<>();
        
        for(int i=0; i<s.length(); i++){
            if(s.charAt(i) == '('){
                mystack.push(s.charAt(i));
            }else{
                if(mystack.isEmpty()){
                    return false;
                }else{
                    mystack.pop();
                }
            }
        }
        
        return mystack.isEmpty();
    }
}

 

1. Charater형의 Stack을 선언한다.

2. 입력받은 s의 String형 길이만큼 반복문 수행

3. 반복문은 ( 여는 괄호가 들어오면 push

4. ) 닫는 괄호가 들어왔을 때, 스택이 비어 있으면 바로 return false해준다. 그 이유는 비어있을 때 ) 닫는 괄호가 들어왔다는 건 ( 여는 괄호랑 짝이 안맞다는 의미

5. ) 닫는 괄호가 들어왔을 때, 스택이 비어 있지 않으면 ( 여는 괄호랑 짝이 맞는다는 의미기 때문에 pop

6. 마지막으로 스택이 비어있는지의 결과를 return