알고리즘
백준 9935번 문자열 폭발 (JAVA)
박카스마시며코딩
2023. 12. 1. 20:55
https://www.acmicpc.net/problem/9935
9935번: 문자열 폭발
첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모
www.acmicpc.net
저는 스택을 통해 문제를 해결하였습니다.
스택으로 이전의 문자들을 저장하고, 스택이 폭발 문자열의 길이보다 크다면, 위에서부터 폭발 문자열과 비교하여 같다면 스택에서 전부 빼어 문제를 풀었습니다.
package BOJ.etc;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
public class BOJ_9935 {
private static final int NOT_FOUND = -1;
private static final String EMPTY = "FRULA";
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
String bombStr = br.readLine();
Stack<Character> stack = new Stack<>();
for(int i = 0 ; i < str.length() ; i++){
char ch = str.charAt(i);
stack.add(ch);
if(stack.size() >= bombStr.length()){
boolean flag = true;
for(int j = 0 ; j < bombStr.length() ; j++){
if(stack.get(stack.size() - bombStr.length() + j) != bombStr.charAt(j)){
flag = false;
break;
}
}
if(!flag) {
continue;
}
for(int j = 0 ; j < bombStr.length() ; j++){
stack.pop();
}
}
}
if(stack.size() == 0) {
System.out.println(EMPTY);
}
StringBuilder sb = new StringBuilder();
while(!stack.isEmpty()){
sb.append(stack.pop());
}
sb = sb.reverse();
System.out.println(sb.toString());
}
}