1. 문제
https://www.acmicpc.net/problem/9935
2. 풀이 과정
StringBuilder객체인 sb에 결과 문자열을 담았다.
실행 과정은 아래 2단계로 정리할 수 있다.
1) (sb길이 >= 폭발시킬 문자열 길이) & (방금 읽은 문자 == 폭발시킬 문자열의 마지막 문자)이면, 검사 시작
2) sb의 뒤에서 폭발시킬 문자열 길이만큼 잘라서 비교 => 같으면 자르기
폭발시킬 문자열 내에 반복되는 구간이 있다면 KMP를 쓰는 게 빠를 것 같지만, 이 문제엔 반복이 없다고 해서 pass
import java.io.*;
public class Boj9935 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char s1[] = br.readLine().toCharArray();//주어진 문자열
String bomb = br.readLine();
char s2[] = bomb.toCharArray();//폭발시킬 문자열
int len = s2.length;
StringBuilder sb = new StringBuilder();
for(int i=0, size=s1.length; i<size; i++) {
sb.append(s1[i]);
int sbLen = sb.length();
if(sbLen>=len && s1[i]==s2[len-1]) {
String s = sb.substring(sbLen-len, sbLen);
if(s.equals(bomb)) {
sb.setLength(sb.length()-len);//자르기
}
}
}
if(sb.length()==0) { System.out.print("FRULA");}
else {System.out.print(sb.toString());}
}
}
'코딩문제풀이 > Baekjoon' 카테고리의 다른 글
[Java] 백준 1765번 : 닭싸움 팀 정하기 (0) | 2022.05.19 |
---|---|
[Java] 백준 11505번 : 구간 곱 구하기 (0) | 2022.05.19 |
[Java] 백준 2098번 : 외판원 순회* (0) | 2022.05.06 |
[Java] 백준 20056번 : 마법사 상어와 파이어볼 (0) | 2022.04.27 |
[Java] 백준 13168번 : 내일로 여행 (0) | 2022.04.27 |