본문 바로가기

개발/algorithm

[백준 9935번] 문자열 폭발 - python

문제 링크

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

 

9935번: 문자열 폭발

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

www.acmicpc.net

풀이

- stack 사용하여 풀이

- 문자를 stack에 하나씩 삽입

만약 stack의 가장 최근에 들어간 문자와 폭발 문자열의 마지막 문자가 같고, 스택의 길이가 폭발 문자열의 길이보다 길거나 같다면

폭발 문자열의 길이만큼 stack 확인 

stack에 폭발 문자열이 있다면 폭발 문자열의 길이만큼 스택에서 문자 제거 

 

stack에 남아있다면, stack 출력

없다면 FRULA 출력 

s = list(map(str,input()))

expo = list(map(str,input()))
stack = []

for i in range(len(s)):
  stack.append(s[i])
  # 스택의 마지막 문자와 폭발 문자열의 마지막 문자가 같고, 스택의 길이가 폭발 문자열의 길이보다 길다면 
  if stack[-1] == expo[-1] and len(stack) >= len(expo):
    # 스택에 폭발 문자열 있는지 확인 
    if stack[-len(expo):] == expo:
      # 폭발 문자열이 있다면 폭발 문자열의 길이만큼 스택에서 문자 제거 
      for _ in range(len(expo)):
        stack.pop()
        
if stack :
  print("".join(stack))
else:
  print("FRULA")