[BOJ/백준] 문자열 폭발 9935 gold4 / 스택, 큐 / python

구민지·2023년 11월 3일
0
post-thumbnail

문제

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

이해하기 어려운 문제는 아니다. 출력 예시를 보면 어떤 문제인지 바로 이해가 가는데.... 처음엔 그냥 replace로 폭발 문자열이 있으면 그 부분을 제거하는 방법으로 해결하려고 했는데 그렇게 풀면 시간초과가 발생한다 !! 스택, 큐를 사용해서 다시 풀었다

내 코드

import sys
from collections import deque

q=deque(list(sys.stdin.readline().strip()))
bomb=list(input())
len_b=len(bomb)

# stack
stack=[]


while q:
    s=q.popleft()
    stack.append(s)
    if stack[-len_b:]==bomb:
        for _ in range(len_b):
            stack.pop()

ans=''.join(stack)
if len(ans)==0:
    print("FRULA")
else:
    print(ans)

입력값으로 받는 문자열 (ex. mirkovC4nizCC44) 을 queue에 넣어서 맨 앞에 있는 글자를 순서대로 꺼내며 검사한다.
deque 라이브러리를 사용해서 popleft() 기능을 사용한다!!
꺼낸 첫번째 글자는 stack에 append 해주고, 폭탄 문자열 만큼의 길이만큼 stack의 뒤쪽에 있는 문자열과 비교해서 같다면 폭탄 문자열이 있다는 뜻이므로 폭탄 문자열 길이만큼 stack에서 pop() 해준다.

쉬워보이는 문제 였는데 스택을 생각해내야해서 골드였나 보다~

0개의 댓글