Algorithm

자료구조 / 백준 10799 쇠막대기

Dear-J 2025. 4. 8. 18:14

 

풀이

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

public class S10799 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String s = br.readLine();
        Stack<Character> stack = new Stack<>();

        int cnt = 0;

        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == '(') {
                stack.push(s.charAt(i));
            } else if (s.charAt(i) == ')') {
                stack.pop();
                if (s.charAt(i - 1) == '(') {
                    cnt += stack.size();
                } else if (s.charAt(i - 1) == ')') {
                    cnt += 1;
                }
            }
        }
        System.out.println(cnt);
    }
}

 

stack을 사용해서 (을 만났을 때만 push

 

)을 만나는 경우에는 전의 문자열이 (인지 )인지에 따라 조건적으로 막대기의 카운트를 올리게 했음