Coding Test/백준(Python)
[백준/Python] 9935번(구현)_문자열 폭발
syunze
2024. 2. 27. 16:49
📌문제 유형
자료구조, 문자열, 스택
📌문제
9935번: 문자열 폭발
첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모
www.acmicpc.net
📌나의 문제풀이
- 시간 초과로 실패
import sys
from collections import deque
input_ = sys.stdin.readline()
check = list(sys.stdin.readline())
q = deque(input_)
while True:
if check[0] not in q or len(q) < len(check):
break
word = q.popleft()
if word != check[0]:
q.append(word)
else:
flag = -1
if len(q) > 0:
for i in range(1,len(check)):
if check[i] == q[i-1]:
flag = 0
else:
flag = 1
break
if flag == 0:
q = list(q)[len(check)-1:]
q = deque(q)
else:
q.append(word)
if len(q) > 0:
print(''.join(q))
else:
print('FRULA')
📌다른사람의 문제풀이
import sys
x = list(sys.stdin.readline().strip())
M = list(sys.stdin.readline().strip())
m = len(M)
stack = []
for i in x:
stack.append(i)
if stack[len(stack)-m:len(stack)] == M: #스택의 끝부터 M의 글자열 크기까지 자른게 M과 같다면
for _ in range(m): # m의 길이만큼
stack.pop() # stack에서 꺼내준다!
if stack:
print(*stack, sep='')
else:
print("FRULA")
# 출처: https://edder773.tistory.com/26 [개발하는 차리의 공부 일기:티스토리]
📌리뷰
- deque 쓰지도 않고 list에서 stack 구현
- 풀이가 너무 간단해서 황당
- 문자열 길이 100만이라 시간복잡도 줄이는게 포인트! (문자열 제거는 스택을 생각해보자)
728x90