알고리즘/JAVA

5. 쇠막대기

vivi 2021. 9. 23. 02:31
import java.util.*;

class Main {
	public int solution(String str) {
		int answer = 0;
		Stack<Character> stack = new Stack<>();
		int lt = 0;
		for (char c : str.toCharArray()) {
			if (c == '(') {
				stack.push(c);
				lt++;
			} else if (c == ')') {
				if (stack.peek() == '(') {
					stack.push(c);
					lt--;
					answer += lt;
				} else {
					stack.push(c);
					lt--;
					answer += 1;
				}
			}
		}
		return answer;
	}

	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str = kb.next();
		System.out.print(T.solution(str));
		kb.close();
	}
}

 

 

import java.util.*;

class Main {
	public int solution(String str) {
		int answer = 0;
		Stack<Character> stack = new Stack<>();
		for (int i = 0; i < str.length(); i++) {
			if (str.charAt(i) == '(') {
				stack.push(str.charAt(i));
			} else {
				stack.pop();
				if (str.charAt(i - 1) == '(') {
					answer += stack.size();
				} else {
					answer += 1;
				}
			}
		}
		return answer;
	}

	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str = kb.next();
		System.out.print(T.solution(str));
		kb.close();
	}
}