'('와 ')'가 서로 떨어져서 이루어지고 있으면 막대기가 하나 생성되고
'('와 ')'가 서로 붙어서 이루어지고 있으면 레이저가 생성되어서 막대기를 나눈다.
스택을 이용하여 푸는 문제이다.
레이저인 경우 '('의 개수를 계산하고 쇠 막대기 인 경우 스택에 +1을 해준다.
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;
public class Num10799 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.next();
Stack<Integer> stack = new Stack<Integer>();
int result = 0;
for(int i = 0; i<input.length(); i++) {
if(input.charAt(i) == '(') {
stack.push(i);
} else {
if(stack.peek() == i-1) {
stack.pop();
result += stack.size();
} else {
stack.pop();
result += 1;
}
}
}
System.out.println(result);
}
}
참고 : https://binghedev.tistory.com/47
출처 : https://www.acmicpc.net/problem/10799