📊알고리즘, 문제풀이/📈문제풀이 (PS)

[알고리즘][Python] 백준 9935 문자열 폭발 문제 풀이

Written by Donghak Park

문제 출처 : www.acmicpc.net/problem/9935

 

9935번: 문자열 폭발

첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모

www.acmicpc.net


문제 해석 : 폭발 문자열과 일치하는 문자열을 제거하고 나머지를 이어 붙인다. 이때 다시 폭발 문자열이 생성될 수 있으며 이 또한 같은 방식으로 제거를 반복한다. 마지막까지 수행했을 때 길이가 0이라면 FRULA를 출력하고 아니라면 그 문자열을 출력하는 문제이다.

 

문제 풀이 : 파이썬에서 제공하는 replace를 사용하면 시간초과가 나온다. 따라서 인덱스와 스택을 활용하여 직접 제거하는 작업을 수행해야 한다.


풀이 코드

import sys
from collections import deque

input = sys.stdin.readline

S = list(input().rstrip())
bomb = list(input().rstrip())

temp = deque()

for s in S:
    temp.append(s)

    if len(temp) >= len(bomb):
        check = True

        for i in range(len(bomb)):
            if temp[len(temp)-len(bomb)+i] != bomb[i]:
                check = False

        if check == True:
            for _ in range(len(bomb)):
                temp.pop()
if temp:
    print(("").join(temp))
else:
    print("FRULA")

author : donghak park
contact : donghark03@naver.com

## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.