백준 9935 - 문자열 폭발
Updated:
Java
9935 번 - 문자열 폭발
문제
접근 방법
- 스택에 주어진 문자열을 한 글자씩 넣는다.
- stack의 top에서 폭탄 문자열의 길이만큼
stack.get()
으로 비교한다. - 폭탄일 경의 폭탄 길이만큼
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);
}
}