Coding Test/BaekJoon_Python

백준 9936 <문자열 폭발> Python

JunOnJuly 2023. 11. 30. 15:12
728x90

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

 

9935번: 문자열 폭발

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

www.acmicpc.net


문자열의 길이가 길다보니 일반적으로 탐색하면 시간초과가 걸립니다. 입력된 문자가 폭발하는 문자열의 마지막 문자인지 파악하고 마지막 문자열이 폭발하는 문자열인지 판단했습니다.


import sys


def solution(str_data, target_str):
    # 스택
    stack = []
    # 스택에 한 글자씩 입력
    for string in str_data:
        stack.append(string)
        # 입력된 글자가 타깃 문자열의 마지막 글자이고 길이가 충분하면
        if len(stack) >= len(target_str) and string == target_str[-1]:
            # 마지막 문자열이 타깃 문자열인지 판단
            if ''.join(stack[-len(target_str):]) == target_str:
                # 스택에서 팝
                for _ in range(len(target_str)):
                    stack.pop()
    # 남은 문자가 없으면
    if not stack:
        return "FRULA"
    # 있으면
    else:
        return ''.join(stack)
   

str_data = sys.stdin.readline().strip()
target_str = sys.stdin.readline().strip()
print(solution(str_data, target_str))

 

728x90