접근
사고
worst case time complexity 가 10**6 이길래 O(n) 으로 되는 문제인가 고민했다. 넉넉히 된다. 조건을 이해했을때 ‘모든 폭발 문자열이 폭발하고 새로운 문자열이 생긴다’ 여서 폭발 문자열을 발견할때마다 폭발하는거랑 결과가 혹시 다른가 고민해보았다. 반례가 떠오르지 않아 O(n) 스택으로 풀었다.
한가지 처음에 arr = arr[0:arr - len(bomb)] 이렇게 넣었다가 TLE 떴다. 저렇게 넣어도 파이썬이 optimization 하지 않을까 했는데 정직하게 주어진 인덱스만큼 복사하는것 같다. pop으로 뒤에 있는 문자열을 날리는 방법으로 풀어야 한다.
import sys
input = sys.stdin.readline
given = input().strip()
bomb = list(input().strip())
size = len(bomb)
arr = []
for i in range(len(given)):
arr.append(given[i])
if arr[-1] == bomb[-1]:
if len(arr) - size >= 0 and arr[len(arr) - size:] == bomb[:]:
arr = arr[:len(arr) - size]
if not arr:
print("FRULA")
else:
print(''.join(arr))