# 문제
백준 9935 문자열 폭발 파이썬 풀이
# 코드
import sys
s = list(sys.stdin.readline().strip())
bomb = list(sys.stdin.readline().strip())
bomb_size = len(bomb)
stk = list()
clear_cnt = 0
bomb_idx = bomb_size-1
temp = 0
while len(s) != 0:
temp +=1
s_poped = s.pop()
stk.append(s_poped)
# print(s, stk)
if len(stk) >= bomb_size :
if stk[-bomb_size:] == bomb[::-1] :
for _ in range(bomb_size) :
stk.pop()
stk_cnt = 0
while len(stk) != 0 :
s.append(stk.pop())
stk_cnt+=1
if stk_cnt == bomb_size :
break
# print("Result")
# print(s, stk)
for ch in reversed(s) :
stk.append(ch)
if len(stk) == 0 :
print("FRULA")
else :
for i in reversed(stk) :
print(i,end="")
## 시간초과 풀이 - 리스트 슬라이싱은 느림
# 시간초과 풀이 ( 리스트 슬라이싱 사용 때문에 ) # #
s = sys.stdin.readline().strip()
bomb = sys.stdin.readline().strip()
bomb_size = len(bomb)
stk = list()
while len(s) >= bomb_size :
# print(s, stk)
if s[-bomb_size:] == bomb :
s = s[:-bomb_size] # 걷어내고
# 스택을 확인한다.
stkcnt = 0
while len(stk) != 0 :
s += stk.pop()
stkcnt +=1
if stkcnt == bomb_size :
break
else :
stk.append(s[-1])
s = s[:-1]
# print("result")
# print(s,stk)
for ch in s :
stk.append(ch)
if len(stk) == 0 :
print("FRULA")
else :
for c in reversed(stk) :
print(c,end="")
# 풀이
스택을 이용해 한번만 순회하여 완성할 수 있다.
리스트 슬라이싱은 느리다.
'•알고리즘(Algorithm ) > 문제풀이' 카테고리의 다른 글
[백준3190&파이썬] 스네이크게임은 deque로 구현이 가능하다. (0) | 2023.06.13 |
---|---|
[백준1865&파이썬] 플로이드 와샬을 통해 음의 사이클 판단하기 (0) | 2023.06.10 |
[백준1043&파이썬] 적절한 자료구조 사용하기, 방문처리를 통해 무한루프에 빠지지 않게 하기 (0) | 2023.06.06 |
[백준17070&파이썬] State를 통해서 파이프의 이동방향을 다각화 하기 (0) | 2023.06.06 |
[백준12865&파이썬] 0-1 냅색문제(배낭문제) (0) | 2023.06.05 |