Algorithm/Stack & Queue

[Python] 백준 9935번 문자열

코딩쪼앙 2024. 7. 15. 17:39

문제

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

입력

  • 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다.
  • 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다.
  • 두 문자열은 모두 알파벳 소문자와 대문자, 숫자 0, 1, ..., 9로만 이루어져 있다.

출력

  • 첫째 줄에 모든 폭발이 끝난 후 남은 문자열을 출력한다.

입력 예제

mirkovC4nizCC44
C4
12ab112ab2ab
12ab

출력 예제

mirkovniz
FRULA

문제 풀이

  • stack에 문자를 하나씩 넣으면서 bomb문자가 있는지 확인한다.
  • bomb 문자가 있다면 bomb의 길이만큼 stack에서 pop한다.
  • stack에 남아있는 문자가 없다면 FRULA를 출력한다.

코드

word = str(input())
bomb = str(input())
bomb_len = len(bomb)

# stack에 문자열 넣으면서 bomb가 존재하는지 뒤에서부터 확인
stack = []
for i in range(len(word)):
    stack.append(word[i])
    if ''.join(stack[-bomb_len:]) == bomb:
        for j in range(bomb_len):
            stack.pop()
if not stack:
    print("FRULA")
else:
    print(''.join(stack))

word = str(input())
bomb = str(input())
# print(word)
# while True:
while bomb in word:
    word = word.replace(bomb, "")
if word == "":
    print("FRULA")
else:
    print(word)

문자열의 크기가 1,000,000 까지 가능하기 때문에 stack을 사용하지 않고 파이썬에 내장된 문자열 함수를 사용하면 시간초과 난다