Algorithm
[백준][JAVA] 9935 : 문자열 폭발
밍맹030
2021. 9. 11. 14:23
728x90
https://www.acmicpc.net/problem/9935
9935번: 문자열 폭발
첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모
www.acmicpc.net
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String origin = br.readLine();
String explo = br.readLine();
Stack<Character> stack = new Stack<Character>();
//초기 문자열의 가장 마지막부터 stack에 push 한다.
for(int i=origin.length()-1; i>-1; i--) {
stack.push(origin.charAt(i));
if(stack.size()>=explo.length()&&stack.peek()==explo.charAt(0)){
//stack의 크기가 폭탄 문자열 크기 이상, stack의 top과 폭탄 문자열의 첫 글자가 같은 경우
boolean flag = true;
for(int j=1; j<explo.length(); j++) {
//top이 같은 것을 위에서 확인했으므로 그 다음 문자부터 확인한다.
if(stack.get(stack.size()-j-1) != explo.charAt(j)) {
flag = false;
break;
}
}
if(flag) { //폭탄 문자열이 있는 경우 폭탄 문자열의 길이 만큼 pop 연산 실행
for(int j=0; j<explo.length(); j++)
stack.pop();
}
}
}
StringBuilder sb = new StringBuilder();
int size=stack.size();
if(stack.isEmpty()) System.out.println("FRULA");
else {
while (size-- > 0)
sb.append(stack.pop());
}
System.out.println(sb);
}
}
728x90