https://www.acmicpc.net/problem/11899

코드설명

스택(Stack) 을 활용합니다.

 

Stack에 올바른 괄호일경우 해당 모양의 괄호는 빼주면서 처리하면 됩니다.

마지막에 Stack.size()를 출력함으로써 올바르지 않은 괄호의 개수를 모두 셀 수 있습니다.

코드

package Main;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
 
public class Main {
	static int N, M, S, P, A, B, X, L, R, C, n, k, m, l, K, D, T;
	static int answer = 0;
	static Stack<Character> stack = new Stack<>();
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//		StringTokenizer st = new StringTokenizer(br.readLine());
		    
		String str = br.readLine();
		
		for(int i=0; i<str.length(); i++) {
			if(str.charAt(i) == ')') {
				if(!stack.isEmpty() && stack.peek() == '(') {
					stack.pop();
				}else {
					stack.push(')');
				}
			}else if(str.charAt(i) == '(') {
				stack.push('(');
			}
		}
		
		System.out.println(stack.size());
	}
	
}

+ Recent posts