728x90
http://www.acmicpc.net/problem/9935
# 조건
- 폭발 문자열이 폭발하면 그 문자는 문자열에서 사라지며, 남은 문자열은 합쳐진다.
- 폭발은 아래와 같은 과정으로 진행된다.
- 문자열이 폭발 문자열을 포함하고 있는 경우, 모든 폭발 문자열이 폭발하게 되고
- 남은 문자열을 순서대로 이어 붙여 새로운 문자열을 만든다.
- 새로 생긴 문자열에 폭발 문자열이 포함되어 있을 수도 잇다.
- 폭발은 폭발 문자열이 문자열에 없을 때까지 계속된다.
- 모든 폭발이 끝난 후 어떤 문자열이 남는지 구해보려고한다.
- 남아 있는 문자가 없는 경우 "FRULA"를 출력
# 접근 방법
- 자료 구조 중 스택을 이용하여 풀어주면 될 것 같다.
- 폭발 문자열의 마지막 글자가 들어온다면, 스택을 검사해주면 될 것 같다.
- 이 때, 검사는 슬라이싱을 이용해준다.
- 범위는 - (폭발 문자열의 길이) : 로 해준다.
- 만약 폭발 문자열이 완성되어 있다면, 길이만큼 pop을 해주고 아니라면 다시 append 해준다.
import sys
sys.stdin = open('input.txt')
input = sys.stdin.readline
string = list(input().rstrip())
target = list(input().rstrip())
stack = []
for i in string:
cnt = 0
stack += i
if i == target[-1]:
if target == stack[-len(target):]:
while cnt < len(target):
stack.pop()
cnt+=1
if stack:
print(*stack, sep='')
else:
print('FRULA')
728x90
'ALGORITHM > 자료구조' 카테고리의 다른 글
[백준 11478번] 파이썬 - 서로 다른 부분 문자열의 개수 (0) | 2022.12.28 |
---|---|
[백준 14425번] 파이썬 - 문자열 집합 (0) | 2022.12.26 |
[백준 2263번] 파이썬 - 트리의 순회 (0) | 2022.12.12 |
[백준 7785번] 파이썬 - 회사에 있는 사람 (0) | 2022.12.11 |
[백준 1991번] 파이썬 - 트리 순회 (1) | 2022.12.10 |