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
'Coding Test > BaekJoon_Python' 카테고리의 다른 글
백준 11279 <최대 힙> Python (0) | 2023.12.02 |
---|---|
백준 10986 <나머지 합> Python (0) | 2023.12.01 |
백준 2630 <색종이 만들기> Python (0) | 2023.11.29 |
백준 16139 <인간-컴퓨터 상호작용> Python (0) | 2023.11.28 |
백준 9663 <N-Queen> Python (0) | 2023.11.27 |