Lecture5_2

8703 ワード

public class Lecture5_2 {

    public static void main(String[] args) {

        // 값 받기
        Scanner sc = new Scanner(System.in);
        String str = sc.next();

        // 출력
        String result = effaceBracket(str);
        System.out.println(result);

    }

    private static String effaceBracket(String str) {

        // 시작 괄호들의 위치를 담을 스택
        Stack<Integer> stack = new Stack<>();
        // str을 문자 배열로
        char[] cArr = new char[str.length()];
        cArr = str.toCharArray();
        // 인덱스
        int tmp = 0;
        // 결과
        String result = "";

        while (tmp != str.length()) {

            // 각 문자들
            char c = cArr[tmp];

            // 시작 괄호의 인덱스는 스택에 담는다
            if (c == '(') {
                stack.push(tmp);
            // 끝 괄호가 나오면    
            } else if (c == ')') {
                // 가장 최근의 시작 괄호의 인덱스를 빼와서
                int p = stack.peek();
                // 사이의 문자들을 지운다
                for (int i = p; i <= tmp; i++) {
                    cArr[i] = ' ';
                }
                // 사용한 시작 괄호는 지운다
                stack.pop();
            }

            // str의 길이만큼 ++
            tmp++;

        }

        // 나머지 문자들을 끌어온다
        for (char c : cArr) {
            if (c != ' ') {
                // 결과에 덧붙인다
                result += c;
            }
        }

        return result;
    }

}