문제 출처 : www.acmicpc.net/problem/9935
문제 해석 : 폭발 문자열과 일치하는 문자열을 제거하고 나머지를 이어 붙인다. 이때 다시 폭발 문자열이 생성될 수 있으며 이 또한 같은 방식으로 제거를 반복한다. 마지막까지 수행했을 때 길이가 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
## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.
'📊알고리즘, 문제풀이 > 📈문제풀이 (PS)' 카테고리의 다른 글
[알고리즘][Python] 백준 9251 LCS 문제 풀이 (0) | 2021.01.27 |
---|---|
[알고리즘][Python] 백준 10830 행렬 제곱 문제 풀이 (0) | 2021.01.27 |
[알고리즘][Python] 백준 15652 N과 M (4) 문제 풀이 (0) | 2021.01.26 |
[알고리즘][Python] 백준 15650 N과 M (2) 문제 풀이 (0) | 2021.01.26 |
[알고리즘][Python] 백준 9663 N-Queen 문제 풀이 (0) | 2021.01.26 |