문제링크
문제 접근
- contains, replaceAll 쓰면 쉽지만 String은 할때마다 메모리 새로 할당하므로 메모리 초과 발생
- 문자열 길이가 백만, 폭발문자열 길이 36이므로 반복문 돌자
- 스트링빌더에 넣으면서 폭발문자열 sb 길이가 boom.length이상이면 검사
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class baek_9935 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
String boom = br.readLine();
StringBuilder sb = new StringBuilder();
for(int i=0;i<str.length();i++){
char now = str.charAt(i);
sb.append(now);
if(sb.length() >= boom.length()){
boolean flag = true;
for(int j=0;j<boom.length();j++){
if(sb.charAt(sb.length()-boom.length() + j) != boom.charAt(j)){
flag = false;
break;
}
}
if(flag){
sb.delete(sb.length()-boom.length(), sb.length());
}
}
}
if(sb.length() == 0){
System.out.println("FRULA");
}
else System.out.println(sb);
}
}
결과

정리
- StringBuilder 지원 메서드들 검색하고 풀었다
- 이어지는 폭발 처리에 대해 고민했지만 sb로 계속 확인하므로 해결