1시간 이하. 로직을 생각하는데 어렵지 않았다
[백준] 9935. 문자열 폭발
전체 문자열과 폭발 문자열이 주어진다. 문자열이 폭발했을 때 남아있는 전체 문자열을 출력해라
입력받은 전체 문자열의 길이가 10^7 임을 보고 O(n)으로 탐색을 해야 한다는 것을 떠올릴 수 있다. 문자열 길이 보고 스택 냄새가 솔솔 나서 스택으로 풀었다.
처음에 2-3 과정에서 끝문자를 append하지 않아 통과하지 않았음!
sentence = input()
word = input()
stack = []
n = len(word)
cnt = 0
for w in sentence:
if cnt >= n-1 and w == word[-1]:
flag = False
for i in range(n-1): #i = 0, 1, 2 ...
if stack[-i-1] != word[-i-2]:
flag = True
break
if not flag:
for i in range(n-1):
stack.pop()
cnt = cnt-(n-1)
else:
stack.append(w)
else: #아닐 때
stack.append(w)
cnt += 1
if not stack:
print("FRULA")
else:
print(''.join(stack))