9935번: 문자열 폭발

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

www.acmicpc.net


 

스택을 이용하자!

 

  1. 문자열을 차례대로 stack에 넣는다.
  2. 이때 폭탄(bomb)길이보다 길거나 같을 때, 마지막 문자가 같은지 확인한다.
  3. 같다면 그 전에 꺼도 같은지 확인한다.
  4. 같다면 stack에서 폭탄을 제거해준다.
  5. stack에 남아있다면 출력 (리스트이므로 String으로 변환해 출력)
  6. 남아있지 않다면 FLURA를 출력해준다. 

 

import sys
input = sys.stdin.readline

S = list(input().rstrip())
bomb = list(input().rstrip())

stack = []

for i in range(len(S)):
    stack.append(S[i])
    if stack[-1] == bomb[-1] and len(stack) >= len(bomb):
        if stack[-len(bomb):] == bomb:
            for i in range(len(bomb)):
                stack.pop()

if stack:
    print("".join(stack))
else:
    print("FRULA")
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기