문제는 다음과 같은 두가지 상황이 있다.
1. 열린괄호('(')인 경우
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class ANS10799 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
System.out.println(solve(st.nextToken()));
}
public static int solve(String s){
Stack<Character> stack = new Stack<Character>();
String arr[] = new String[s.length()];
int result = 0;
for(int i = 0 ; i < s.length(); i++){
char c = s.charAt(i);
arr[i] = String.valueOf(c);
if(c == '('){
stack.push(c);
}
else if( c == ')'){
stack.pop();
if(arr[i-1].equals("(")){
result += stack.size();
}
else{
result += 1;
}
}
}
return result;
}
}
스택의 크기만큼 담는 방법까진 생각했는데 미처 배열 이전을 확인해 레이저인지 막대기인지 확인하는 것을 생각하지 못하였다 크흡0_0