[백준 9935] 문자열 폭발
stack은 LIFO(Last In First Out)의 특징을 가진 자료구조입니다.
Python을 활용하여 문자열 문제를 해결할 때에 stack을 유용하게 써봅시다.
폭발은 다음과 같은 과정으로 진행됩니다.
1. 문자열이 폭발 문자열을 포함하고 있는 경우에, 모든 폭발 문자열이 폭발하게 된다.
남은 문자열을 순서대로 이어 붙여 새로운 문자열을 만든다.
2. 새로 생긴 문자열에 폭발 문자열이 포함되어 있을 수도 있다.
3. 폭발은 폭발 문자열이 문자열에 없을 때까지 계속된다.
무언가 계속 쌓아가다가 조건에 부합하면 폭발한다는 점에서 테트리스와 살짝 비슷하다고도 말할 수 있겠습니다.
한 글자씩 계속 쌓아가다가 합쳐지는 문자열 중에서 폭발 문자열이 있으면
해당 문자들을 제거하고 빈 칸을 채워가며 다시 쌓아가는데
그때 이어붙인 문자열에도 폭발 문자열이 포함되어 있을 수 있다는 점을 생각할 때
자료구조 stack이 매우 유용하게 사용될 수 있습니다.
리스트 하나를 stack으로 만든 다음
입력된 문자열의 글자들을 차례대로 stack에 집어넣습니다.
이때, 입력된 글자를 포함하여 폭발 문자열 길이만큼 stack 뒷부분 요소들을 join으로 모았을때
폭발 문자열이 된다면 해당 요소들을 전부 제거합니다.
입력된 문자열의 길이만큼 for문을 수행한 후에 남아있는 요소들을 join으로 모아 출력하거나
아무것도 남아있지 않다면 문제의 조건대로 ‘FRULA’를 출력하면 됩니다.
문제 : 백준 9935 - 문자열 폭발