문자열폭발

hyeongjun Jo·2022년 12월 19일
0

Backjoon

목록 보기
9/24
post-custom-banner

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

문제

풀이

입력문자열의 문자를 하나하나 살펴보면서 폭발 문자열의 끝 자와 같은지 확인하고 만약 끝자가 같다면 폭발문자열이 포함되는지 확인한다
StringBuilder를 스택처럼 사용하며 문자열을 넣으면 된다.

코드

전체코드

package baekjoon._9935;

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

public class Main {

    static String inputString, bomb;

    public static void input() {
        FastReader fr = new FastReader();
        inputString = fr.nextLine();
        bomb = fr.nextLine();
    }

    public static void main(String[] args) {
        input();
        pro();
    }

    public static void pro() {
        StringBuilder sb = new StringBuilder();
        char[] charArray = inputString.toCharArray();

        for (int i = 0; i < inputString.length(); i++) {
            char cur = inputString.charAt(i);
            sb.append(cur);
            if (cur == bomb.charAt(bomb.length() - 1) && sb.length() >= bomb.length()) {
                boolean same = true;
                // 같은 지 확인
                for (int j = 0; j < bomb.length()-1; j++) {
                    if (bomb.charAt(j) != sb.charAt(sb.length() - bomb.length() + j)) {
                        same = false;
                        break;
                    }
                }
                if(same) sb.delete(sb.length() - bomb.length(), sb.length());
            }
        }
        if(sb.length() == 0) System.out.println("FRULA");
        else System.out.println(sb);

    }

    static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader(){ br = new BufferedReader(new InputStreamReader(System.in));}

        String next(){
            while(st == null || !st.hasMoreTokens()){
                try{
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e){
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() { return Integer.parseInt(next()); }

        long nextLong() { return Long.parseLong(next()); }

        Double nextDouble() { return Double.parseDouble(next()); }

        String nextLine(){
            String str = "";
            try{
                str = br.readLine();
            } catch(IOException e){
                e.printStackTrace();
            }
            return str;
        }
    }
}

느낀점

당연히 안되겠지만 replace를 사용해봤다. 문자열을 하나하나 처리해야해서 귀찮은 문제였다.

profile
DevOps Engineer
post-custom-banner

0개의 댓글