소스코드
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Stack;
public class BraceTest {
public static void main(String[] args) {
List<String> inputStrs = new ArrayList<String>();
Scanner scan = new Scanner(System.in);
int count = Integer.parseInt(scan.nextLine());
for(int i=0; i<count; i++) {
inputStrs.add(scan.nextLine());
}
int line=0;
for(String str : inputStrs) {
Stack<Character> symbolStack = new Stack<>();
Stack<Character> popSymbolStack = new Stack<>();
String[] strs = str.split(" ");
int strCnt = Integer.parseInt(strs[0]);
int pnt = Integer.parseInt(strs[1]);
String inputString = strs[2];
char[] inputSymbol=inputString.toCharArray();
for(int i=0; i<inputSymbol.length; i++) {
symbolStack.push(inputSymbol[i]);
}
// System.out.println(symbolStack);
int pairPnt = 0;
System.out.print("#" + ++line + " ");
while(!symbolStack.isEmpty()) {
int size = symbolStack.size();
char data = symbolStack.pop();
if(data == ')') {
if(popSymbolStack.isEmpty() && pnt<size) {
pairPnt = size;
}
popSymbolStack.push(data);
}else if(data == '(') {
// System.out.println(popSymbolStack);
if(popSymbolStack.isEmpty()) {
pairPnt = 0;
// System.out.print("not match"); //no matching
break;
}else {
popSymbolStack.pop();
// if(size == pnt) {
// break;
// }
}
}else {
System.out.println("error");
}
}
// System.out.println(symbolStack);
// System.out.println(popSymbolStack);
if(!popSymbolStack.isEmpty()) {
pairPnt = 0;
}
System.out.println(pairPnt);
}
scan.close();
}
}
//6 0 6 10 0
/*
5
12 3 ()(())(())()
16 5 (()()()))()()())
8 5 ()()()()
14 3 ()((())())(())
12 5 ())((()(()))
*/ |