SWEA 5432번 - 쇠막대기 자르기
2021. 10. 1. 01:52ㆍAlgorithm/SWEA
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Solution_쇠막대기자르기 {
static int T; // 테케
static char[] crr;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
Stack<Character> stack = new Stack<>();
T = Integer.parseInt(in.readLine());
for (int tc = 1; tc <= T; tc++) {
String str = in.readLine();
crr = new char[str.length()];
for (int i = 0; i < str.length(); i++) {
crr[i] = str.charAt(i);
}
int cnt = 0;// 막대기의 개수
for (int i = 0; i < crr.length; i++) {
// ( 기호가 있을 때
if (crr[i] == '(') {
stack.push(crr[i]);
} else if (crr[i] == ')' && crr[i - 1] == '(') { // i 값이 ) 닫는 괄호인데 전의 값이 ( 연다면 레이저 겠지.
stack.pop(); // 레이저 에 해당하는 ( 열린괄호 하나를 꺼내기.
cnt += stack.size(); // stack 에 있는 만큼 막대기 개수
} else if (crr[i] == ')' && crr[i - 1] == ')') { // 막대기의 길이가 끝이 났다
stack.pop(); // ( 를 하나 꺼내 이건 레이저가 될 것이다.
cnt += 1; // 막대기의 개수가 한개 더해짐. 레이저로 짤리면 한개가 늘어남.
}
}
System.out.println("#"+tc+" "+ cnt);
}
}
}
728x90