알고리즘/BOJ

[BOJ] 9935. 문자열 폭발

재담 2022. 4. 21. 23:38

문제 원본 : https://www.acmicpc.net/problem/9935

 

9935번: 문자열 폭발

첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모

www.acmicpc.net

import java.io.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        String s = br.readLine();
        String bomb = br.readLine();

        StringBuilder builder = new StringBuilder();

        int sLen = s.length();
        int bombLen = bomb.length();
        for (int i = 0; i < sLen; ++i) {
            char ch = s.charAt(i);
            builder.append(ch);

            boolean isBomb = true;
            if (ch == bomb.charAt(bombLen - 1) && builder.length() >= bombLen) {
                for (int j = builder.length() - bombLen, k = 0; j < builder.length(); ++j, ++k) {
                    if (builder.charAt(j) != bomb.charAt(k)) {
                        isBomb = false;
                        break;
                    }
                }

                if (isBomb) {
                    builder.replace(builder.length() - bombLen, builder.length(), "");
                }
            }
        }

        if (builder.length() > 0) {
            bw.write(builder.toString());
        } else {
            bw.write("FRULA");
        }

        bw.close();
        br.close();
    }
}
  • 한 글자씩 반복문을 돌면서 해당 글자가 폭탄의 마지막 글자와 같으면
  • 폭탄의 길이만큼 끝에 있는 문자열을 비교해서 폭탄이면 제거한다.

'알고리즘 > BOJ' 카테고리의 다른 글

[BOJ] 2075. N번째 큰 수  (0) 2022.04.23
[BOJ] 5052. 전화번호 목록  (0) 2022.04.22
[BOJ] 17413. 단어 뒤집기 2  (0) 2022.04.20
[BOJ] 1051. 숫자 정사각형  (0) 2022.04.10
[BOJ] 3273. 두 수의 합  (0) 2022.04.09