쇠막대기

문제 풀러가기

10799

코드

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 str = br.readLine();
    int cnt = 0;

    ArrayList<Character> stack = new ArrayList<Character>();

    for(int i = 0; i < str.length(); i++) {
      if(str.charAt(i) == '(') {
        stack.add('(');
      } else {
        stack.remove(stack.size() - 1);

        if(str.charAt(i - 1) == '(') {
          cnt += stack.size();
        } else {
          cnt += 1;
        }
      }
    }

    System.out.println(cnt);
  }
}

설명

한줄로 입력되어 들어오고 ()가 연속이면 레이저이다. 레이저가 나오면 이전에 스택에 저장된 것들을 확인하여 갯수를 추가한다.