1 ๋ถ„ ์†Œ์š”

๐Ÿ“ [D4_5432] ์‡ ๋ง‰๋Œ€๊ธฐ ์ž๋ฅด๊ธฐ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;

public class Solution {
	static char before_value;

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();

		int tc = Integer.parseInt(br.readLine());

		for (int t = 1; t <= tc; t++) {
			sb.append("#").append(t).append(" ");

			// ์ด ํ•ฉ
			int res = 0;

			// ๊ด„ํ˜ธ ๊ด€๋ฆฌํ•ด์ค„ stack
			Stack<Character> stack = new Stack<Character>();

			// ๊ด„ํ˜ธ ์ž…๋ ฅ
			String input = br.readLine();

			for (int i = 0; i < input.length(); i++) {
				// ๊ด„ํ˜ธ ํ•˜๋‚˜์”ฉ ๋ฐ›์•„์˜ค๊ธฐ
				char temp = input.charAt(i);

				// '(' ์ด๋ฉด stack์— ์ €์žฅ
				if (temp == '(') {
					stack.add(temp);
				}
				// ๋ ˆ์ด์ ธ์ธ ๊ฒฝ์šฐ
				else if (temp == ')' && before_value == '(') {
					stack.pop();
					res += stack.size();
				}
				// ์•ž์— ')' ์ธ ๊ฒฝ์šฐ
				else if (temp == ')' && before_value == ')') {
					stack.pop();
					res += 1;
				}
				before_value = temp;
			}
			sb.append(res).append("\n");
		}

		System.out.println(sb);
	}
}

๐Ÿค” ๋‚˜์˜ ์ƒ๊ฐ

์ด ๋ฌธ์ œ๋Š” STACK์„ ์ด์šฉํ•ด์„œ ํ’€์–ด ์ฃผ์—ˆ๋‹ค.
์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋ ˆ์ด์ €๋ฅผ ๋งŒ๋‚˜๋Š” ๊ฒฝ์šฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ ˆ์ด์ €๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฒฝ์šฐ๋ฅผ ๋‚˜๋ˆ„์—ˆ๋‹ค.
โ€˜(โ€˜ ์ด๋ฉด add ํ•˜๊ณ  โ€˜)โ€™ ์ธ ๊ฒฝ์šฐ์—๋Š” โ€˜()โ€™๊ฐ€ ํ•œ ๋ฒˆ์— ๋‚˜์˜ค๋Š” ๋ ˆ์ด์ €์ธ ๊ฒฝ์šฐ์™€ ๋ฐ”๋กœ ๋‚˜์˜ค์ง€ ์•Š๊ณ  ์•ž์— ์œ„์น˜ํ•œ โ€˜)โ€™ ์ธ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆ„์–ด ์ฃผ์—ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋ ˆ์ด์ €์ธ ๊ฒฝ์šฐ์—๋Š” ์‡ ํŒŒ์ดํ”„๊ฐ€ ์ž˜๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์Šคํƒ์˜ ์‚ฌ์ด์ฆˆ๋งŒํผ ๋”ํ•ด์ฃผ๊ณ 
๋‹ค๋ฅธ ๊ฒฝ์šฐ๋Š” 1๋งŒ ๋”ํ•ด์ฃผ์—ˆ๋‹ค.