백준 문자열폭발 9935 java

정상민·2023년 8월 8일

문제링크

문제 접근

  • 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로 계속 확인하므로 해결
profile
안녕하세요! 개인 공부를 꾸준히 기록하는 공간입니다.

0개의 댓글