반응형
처음에 풀때는 그 전 문제가 재귀여서 그런지 재귀로 풀었다.
import sys
s=list(sys.stdin.readline().rstrip())
bomb=list(sys.stdin.readline().rstrip())
def check(a,bomb):
d = []
col=len(bomb)
row = len(a)
for x in range(row):
if a[x]==bomb[0] and x+(col-1)<row:
stack=0
for y in range(x,x+col):
if a[y]==bomb[y-x]:
stack+=1
if stack==col:
d.append(y-(col-1))
if d:
check(b(d,a),bomb)
else:
if a:
print("".join(a))
return
else:
print("FRULA")
return
def b(d,a):
col = len(bomb)
row = len(a)
for t in d:
for x in range(t,t+(col-1)+1):
if x<row:
a[x]=0
while 0 in a:
a.remove(0)
return a
check(s,bomb)
s와 bomb을 비교해서 같은 것을 찾으면 0으로 교체하고, 지워주는 식인데
결론은 시간 초과다.
저 stack이라는 변수를 쓰는 대신에 스택을 썼다면 한번에 풀었을텐데..
스택으로 푼 풀이다.
s=input()
bomb=input()
com=len(bomb)
stack=[]
for x in s:
stack.append(x)
if x==bomb[-1] and ''.join(stack[-com:])==bomb:
del stack[-com:]
ans=''.join(stack)
if ans=='':
print("FRULA")
else:
print(ans)
반응형