백준 9935 - 문자열 폭발

Updated:

Java

9935 번 - 문자열 폭발

문제

접근 방법

  1. 스택에 주어진 문자열을 한 글자씩 넣는다.
  2. stack의 top에서 폭탄 문자열의 길이만큼 stack.get()으로 비교한다.
  3. 폭탄일 경의 폭탄 길이만큼 pop() 한다.

코드

import java.util.*;
import java.io.*;

public class Main {
	static int n, result;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	char[] word = br.readLine().toCharArray();
    	char[] bomb = br.readLine().toCharArray();
    	int n = word.length;
    	int len = bomb.length;

    	Stack<Character> stack = new Stack<>();

    	boolean isBomb = true;
    	int size;
    	for(int i = 0; i < n; i++) {
    		stack.add(word[i]);
    		size = stack.size();
			// 폭탄의 길이보다 길 때
    		if(size >= len) {
    			// 폭탄의 길이만큼 글자가 같은지 확인
    			for(int j = 0; j < len; j++) {
    				if(stack.get(size - len + j) != bomb[j]) {
    					isBomb = false;
    				}
    			}
    			// 폭탄이 터졌다면
        		if(isBomb) {
        			for(int j = 0; j < len; j++)
        				stack.pop();
        		}
    		}
    		isBomb = true;
    	}

    	StringBuilder sb = new StringBuilder();
    	for(int i = 0; i < stack.size(); i++) {
    		sb.append(stack.get(i));
    	}
    	System.out.println(stack.size() == 0 ? "FRULA" : sb.toString());
    	br.close();
	}

	static int stoi(String str) {
    	return Integer.parseInt(str);
    }
}

총평

후기

개선할 점