본문 바로가기

스터디 1일 1커밋

[240527] 9935.문자열 폭발

https://www.acmicpc.net/problem/9935


나의 코드
1. 문자열에 추가하면서 폭발 문자열이 있을 때 replace로 없애기(시간초과)

import sys

arr = sys.stdin.readline().strip()
word = sys.stdin.readline().strip()
ans = word[::-1]
string = ''

for i in range(len(arr)-1,-1,-1):
    string += arr[i]
    if len(string) >= len(word):
        if ans in string:
            string = string.replace(ans, '')

if len(string) == 0:
    print('FRULA')
else:
    print(string[::-1])

2. 스택에 추가하면서 폭발 문자열이 있을 때 pop으로 없애기(성공)

import sys

arr = sys.stdin.readline().strip()
word = sys.stdin.readline().strip()
ans = word[::-1]
stack = []

for i in range(len(arr)-1,-1,-1):
    stack.append(arr[i])
    if len(stack) >= len(word):
        if ''.join(stack[(-len(word)):]) == ans:
            for k in range(len(word)):
                stack.pop()

if len(stack) == 0:
    print('FRULA')
else:
    print(''.join(stack[::-1]))

 

결과


같은 로직인데 replace로 지우는 건 새로운 문자열을 만드는 것이다 보니 시간이 더 많이 걸리는 것 같다. 그나저나 뒤에서부터 보면 된대서 아예 뒤에서부터 보면서 뒤에꺼 넣고 그랬는데 그냥 앞에서부터 돌면서 뒤의 문자열만 보면 됐나보다... 멍청했군ㅋㅋㅋㅋㅋㅋㅋㅋ