[백준] 4949 균형잡힌세상

문제보기

왜 스택문제임을 빨리 깨닫지 못했을까 ㅜ

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));
    String s = br.readLine();
    StringBuilder sb = new StringBuilder();
    while(true){
      if(s.equals(".")) break; // 종료조건 

      Stack<Character> st = new Stack<>(); // 스택 선언

      boolean ok = true; // 균형 여부 저장 
      for(int i = 0 ; i < s.length() ; i++){
        char c = s.charAt(i);
        if( c == '(') st.push(c); 
        else if( c == ')'){
          if(!st.isEmpty()){ 
            char r = st.pop();
            if( r != '(' ){
              ok = false;
              break;
            }
          }else{
            ok = false;
            break;
          }
        }else if( c == '[') st.push(c);
        else if( c == ']' ){
          if(!st.isEmpty()){
            char r = st.pop();
            if( r != '['){
              ok = false;
              break;
            } 
          }else{
            ok = false;
            break;
          }

        }
      }
      if(!st.isEmpty()) ok = false; // 아직 남아있는 괄호가 있으면 안됨
      if(ok){
        sb.append("yes\n");
      }else{
        sb.append("no\n");
      }
      s = br.readLine();
    }

    System.out.println(sb);
  }
}

Tags:

Categories:

Updated:

Comments