Algorithm/문제

36. 올바른 괄호 (Stack)

챛채 2023. 9. 11. 13:17

( 이 나오면 스택에 push()

) 이 나오면 스택에서 pop()

스택이 비어있는 경우에는 isEmpty()사용해서 비어있으면 true 차있으면 false 반환

 

import java.util.*;

public class Main {

    public String solution(String str) {
        String answer = "YES";
        Stack<Character> stack = new Stack<>();
        for (char x : str.toCharArray()) {
            if (x == '(') { //여는 괄호
                stack.push(x);
            } else { //닫는 괄호가 더 많은 경우
                if(stack.isEmpty()) return "NO";
                 stack.pop();
            }
        }
        //스택에 여는 괄호가 더 많은 경우 
        if(!stack.isEmpty()) return "NO"; //스택에 자료가 남아있으면 true
        return answer;
    }
   public static void main(String[] args){
       Main T = new Main();
       Scanner kb = new Scanner(System.in);
       String str = kb.next();
       System.out.println(T.solution(str));
   }
}