JuSeok

9012번

문제

  • 입력받은 괄호 문자열이 올바른 문자열인지 확인하는 문제.
문제 해결 순서
  1. 입력받은 괄호 문자열을 반복문을 돌며 스택에 하나씩 넣음
  2. 여는 괄호면 스택에 추가, 닫는 괄호면 스택에서 제거
  3. 스택이 비어있는데 닫는 괄호차례이면 잘못된 괄호 문자열이므로 return false
  4. 반복문이 끝나고 스택이 비어있으면 올바른 괄호 문자열이므로 return true
import java.io.*;
import java.util.Scanner;
import java.util.Stack;

public class Main {
    static Stack<String> stack = new Stack<>();
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        scan.nextLine();
        for (int i = 0; i < n; i++) {
            stack = new Stack<>();
            String temp = scan.nextLine();
            if (check(temp)){
                System.out.println("YES");
            }
            else{
                System.out.println("NO");
            }
        }
    }

    static boolean check(String temp){
        if (temp.charAt(0) == '(') {
            stack.add(String.valueOf(temp.charAt(0)));
            for (int j = 1; j < temp.length(); j++) {
                if (temp.charAt(j) == '(') {
                    stack.add(String.valueOf(temp.charAt(j)));
                } else {
                    if (!stack.isEmpty()) {
                        stack.pop();
                    } else{
                        return false;
                    }
                }
            }
            if(!stack.isEmpty()){
                return false;
            }
            else{
                return true;
            }
        }
        return false;
    }
}

Tags