public class Main {
static String bomb;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
bomb = sc.nextLine();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
sb.append(str.charAt(i));
if (sb.length() < bomb.length()) {
continue;
}
if (check(sb)) {
sb.delete(sb.length() - bomb.length(), sb.length());
}
}
System.out.println(sb.isEmpty() ? "FRULA" : sb);
}
private static boolean check(StringBuilder sb) {
for (int j = 0; j < bomb.length(); j++) {
char c1 = sb.charAt(sb.length() - bomb.length() + j);
char c2 = bomb.charAt(j);
if (c1 != c2) {
return false;
}
}
return true;
}
}
🫡bomb가 str안에 들어있을 경우 해당 문자를 지워주는 문제입니다.
Stack
으로 풀어도 되지만 저는StringBuidler
를 이용해서 풀었습니다.
다른 분의 풀이를 참고하여 풀었습니다.(문제를 잘 못 이해해서 시간이 걸렸습니다....😭)1.
StringBuilder
에 하나식 넣어줍니다. 이 때StringBuilder
의 길이가 bomb의 길이보다 길 경우 로직을 실행합니다.
check 로직의 경우 해당 위치부터 bomb 문자열과 일치하는지 체크하는 로직입니다. 일치한다면 해당 문자열만큼
StringBuilder
에서 삭제해주면 되고 아니라면 다음 for문으로 가면됩니다.
StringBuilder
의 길이가 0이라면 FRULA를 출력하고 아니라면StringBuilder
의 값을 출려하면 됩니다.
참고자료: 티스토리 - 코드 연구소
출처 : 백준 - 문자열 폭발