알고리즘

[백준/Java] 백준 9935. 문자열 폭발

Im_Hayden 2024. 11. 6. 16:22

문제

풀이

  • 문자열의 한 문자씩 스택에 삽입
    • 삽입할 때 마다, 스택의 마지막 문자열이 폭발 문자인지 검사 및 처리
    • 스택에서 특정 길이의 문자열 추출을 쉽게 하기 위해, 배열 및 인덱스로 스택 구현

코드

class Main {
    public static void main (String[] args) throws java.lang.Exception {

        // input
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        String bumb = br.readLine();
        int bumbLen = bumb.length();

        // solve
        char[] stack = new char[s.length()];
        int idx = 0;
        for (char ch : s.toCharArray()){
            stack[idx] = ch;

           // check bumb
           while(idx+1 >= bumbLen && String.valueOf(Arrays.copyOfRange(stack, idx+1-bumbLen, idx+1)).equals(bumb)){
               idx -= bumbLen;
           }

           idx++;
        }

        String res = String.valueOf(Arrays.copyOfRange(stack, 0, idx));
        if (res.equals("")) System.out.println("FRULA");
        else    System.out.println(res);
    }
}

결과