알고리즘 - 백준_9012번_괄호

jodbsgh·2023년 4월 24일
0

해당 문제는 스택을 활용하여 풀이할 수 있다.

✅문제

import java.util.*;
import java.io.*;

public class Main{
    public static void main (String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = Integer.parseInt(br.readLine());
        
        for(int i = 0; i<n; i++){
            String s = br.readLine();
            
            if(isBalanced(s)){
              bw.write("YES\n");  
            } else {
                bw.write("NO\n");
            }
        }
        bw.close();
        br.close();
        
    }
        
        public static boolean isBalanced(String s){
             Stack<Character> stack = new Stack<>();
            
            for(int i=0; i<s.length(); i++){
                char c = s.charAt(i);
                
                if(c == '('){
                    stack.push(c);
                }else {
                    if(stack.isEmpty()){
                        return false;
                    }
                    stack.pop();
                }
            }
        return stack.isEmpty();
    }
}

✅추가 정리

br.readLine()으로 괄호를 스트링으로 변환하는 부분에서 만약 스트링의 길이가 홀수인 경우 "No"를 출력하도록 하면 연산을 더 간단하게 할 수도 있을 것 같다는 생각이 든다.

profile
어제 보다는 내일을, 내일 보다는 오늘을 🚀

0개의 댓글