안정적인 문자열

문제 풀러가기

4889

코드

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));

    Stack<Character> stack = new Stack<>();
    StringBuilder sb = new StringBuilder();

    int index = 1;

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

      if(str.contains("-")) break;

      int cnt = 0;

      for(int i = 0; i < str.length(); i++) {
        char c = str.charAt(i);

        if(c == '{') {
          stack.push(c);
        } else {
          if(stack.isEmpty()) {
            cnt += 1;
            stack.push('{');
          } else {
            stack.pop();
          }
        }
      }

      cnt += stack.size() / 2;
      sb.append(index + ". " + cnt + "\n");

      stack.clear();

      index += 1;
    }

    System.out.println(sb.toString());
  }
}

설명

-가 포함되어 있으면 입력을 종료한다. 출력할 때 입력 받은 순서를 출력해야 하므로 인덱스를 지정해 둔다. 안정적으로 바꿔야하는 입력을 스택에 저장하고 여는 괄호와 닫는 괄호가 한 세트이므로 스택 전체 크기에서 2로 나눈다.