SWEA 5432번 - 쇠막대기 자르기

2021. 10. 1. 01:52Algorithm/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