[백준 파이썬] 1068 트리

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

 

9935번: 문자열 폭발

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

www.acmicpc.net

문제



 

주어진 문자열에서 특정 문자를 지운 후의 결과를 출력하는 문제이다.


풀이

스택을 이용하여 해결하였다.

 

word = list(input())
explode = list(input())
explodeLen = len(explode)

먼저 문자열과 지울 문자, 그리고 지울 문자의 길이를 초기화하였다.

 

for i in word:
    q.append(i)
    if q[len(q) - explodeLen : len(q)] == explode:
        for _ in range(explodeLen):
            q.pop()

그 후 먼저 스택에 문자열을 입력한 후

입력받은 문자를 포함하여 끝부분이 지울 문자와 같다면 ( if q[len(q) - explodeLen : len(q)] == explode: )

해당 문자의 길이만큼 스택에서 pop한다.

이런식으로 하나씩 입력받고 검증하면 폭발 문자열 안에 폭발 문자열이 있는경우 (CC44) 와 같은 경우에도 대응할 수 있다.

 

 

코드

from collections import deque
word = list(input())
explode = list(input())
explodeLen = len(explode)

q = []
for i in word:
    q.append(i)
    if q[len(q) - explodeLen : len(q)] == explode:
        for _ in range(explodeLen):
            q.pop()

if q:
    print(*q, sep='')
else:
    print("FRULA")