못 풀었다.
못 풀었다기 보다 생각은 있었지만 내 생각대로 하는건 너무 복잡해서 다른 답이 있을 거 같았다.
주어진 문자열을 문자 하나하나 왼쪽부터 훑고 가면서 폭발 문자열과 일치하지 않으면 결과값을 담을 리스트에 넣고 일치하면 결과값을 담을 리스트에서 폭발 문자열의 숫자-1 만큼 가져온 후 가져온 걸 포함하여 다시 확인하려했다.
그럼 할 수 있으면서 왜 안했냐?
이 생각 또한 풀리긴 할테지만 일단 구현이 너무 복잡하고 (폭발 문자열의 숫자만큼 다시 가져오는 부분) 폭발 문자열의 개수에 따라 속도에 큰 영향을 주기 때문에 안했다.
나는 어떻게 해야 올바른 풀이방법으로 갈 수 있을까?
그럼 다시 내 사고회로를 따라가서.. 폭발 문자열의 숫자만큼 다시 가져와야 된다는 생각이 있었는데 그럼 나는 그 생각을 왜 했을까?
=> 오직 주어진 문자열에서 폭발 문자열을 제거해야겠다는 생각 때문이였다. 그렇다면 오직 주어진 문자열만을 이용하려 한 이유는 무엇일까?
=> 정답은 stack을 모르기 때문에
정리하자면 문자열안에서 어떤 문자를 빼기 위해서는 주어진 문자열만을 이용한 리스트를 만들어서 어떤 원하는 문자를 확인하며 빼는건 너무 복잡해진다. (내가 이전에 생각했던 알고리즘처럼) 그러므로 stack에 문자들을 넣으면서 stack에서 확인하며 원하는 문자열을 빼 결과값을 도출해내는 것이 복잡함을 단순함으로 만드는 길이였다.
import sys
input = sys.stdin.readline
stack = []
munza = input().rstrip()
exp = input().rstrip()
exp_l = len(exp)
for i in munza:
stack.append(i)
if ''.join(stack[len(stack)-exp_l:len(stack)]) == exp:
for _ in range(exp_l):
stack.pop()
if stack:
print("".join(stack))
else:
print("FRULA")