ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • boj)4889 - 안정적인 문자열
    PS/boj 2020. 10. 14. 15:48
    import java.io.*;
    import java.util.Stack;
    
    public class boj_4889 {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
            String str;
            int cnt = 0;
    
            while ( !(str = br.readLine()).contains("-") ) {
                cnt++;
                Stack<Character> stack = new Stack<>();
    
                for (int i = 0; i < str.length(); i++) {
                    char c = str.charAt(i);
    
                    if (c == '}') {
                        if (!stack.isEmpty() && stack.peek() == '{') {
                            stack.pop();
                        } else {
                            stack.push(c);
                        }
                    } else {
                        stack.push(c);
                    }
                }
    
                char[] arr = new char[stack.size()];
                for (int i = arr.length-1; i >= 0; i--) {
                    arr[i] = stack.pop();
                }
    
                int ans = 0;
                for (int i = 0; i < arr.length; i++) {
                    if (i % 2 == 0) { // 짝수
                        if (arr[i] == '}') ans++;
                    } else { // 홀수
                        if (arr[i] == '{') ans++;
                    }
                }
    
                bw.write(cnt + ". " + ans + "\n");
            }
    
            bw.flush();
            bw.close();
        }
    }
    

    - 성공

     

    - {} 이렇게 정상적인 문자열이 바로 붙어있는 경우 바로바로 스택에서 제거

    - 최종적으로 보면 스택에 쌓인 값들은 비정상적인 문자열들

    - 스택에 있는 값들을 배열에 반대로 옮겨담음

    - 배열에서 2개씩 끊어서 본다고 생각

    - 짝수 인덱스는 열린 괄호여야하고 홀수 인덱스는 닫힌 괄호여야함

    - 열린괄호 자리인데 닫힌괄호가 오면 ++

    - 닫힌괄호 자리인데 열린괄호가 오면 ++

     

    'PS > boj' 카테고리의 다른 글

    boj)1926 - 그림  (0) 2020.10.15
    boj)10866 - 덱  (0) 2020.10.14
    boj)2504 - 괄호의 값  (0) 2020.10.14
    boj)4949 - 균형잡힌 세상  (0) 2020.10.13
    boj)6198 - 옥상 정원 꾸미기  (0) 2020.10.13
킹수빈닷컴