균형잡힌 세상

문제 풀러가기

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));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    while(true) {
      String input = br.readLine();

      if(input.equals(".")) {
        bw.flush();
        return;
      }

      bw.write(isBalanced(input));
    }
  }

  static String isBalanced(String s) {
    Stack<Character> stack = new Stack<>();
    boolean result = true;

    for(char ch : s.toCharArray()) {
      if(ch == '(' || ch == '[') {
        stack.push(ch);
      } else if(c == ')') {
        if(stack.isEmpty() || stack.pop() != '(') {
          result = false;
          break;
        }
      } else if(c == ']') {
        if(stack.isEmpty() || stack.pop() != '[') {
          result = false;
          break;
        }
      }
    }

    if(!stack.isEmpty()) {
      result = false;
    }

    return result ? "yes\n" : "no\n";
  }
}

설명

.만 입력이 되면 입력을 종료한다. 입력받은 문자열을 탐색하면서 괄호가 발견되면 스택에 집어 넣는다. 조건을 만족할 경우 탐색이 끝났을 때 스택이 비어있어야한다.