백준 문제풀이/자료구조

[백준] 9935 문자열 폭발 - python

peach_h 2023. 2. 13. 21:15

9935번: 문자열 폭발 (acmicpc.net)

 

9935번: 문자열 폭발

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

www.acmicpc.net

 

우리 조원이 강력추천한 문제다.

stack + 노가다로 풀었다

교수님이 푼 코드 보니까 훨 짧던데, 난 아직 모자르니까 !

그래도 풀어서 뿌듯 ~

 

stack = []
txt = list(input())
txt_s = list(input())
h = len(txt_s)
for i in range(len(txt)):
    # txt_s의 길이보다 stack이 작으면 계속 쌓기
    if len(stack) < h :
        stack.append(txt[i])
    # txt_s 보다 크거나 같아지면, 뒤에있는 문자열이 txt_s와 같은지 검사
    elif len(stack) >= h and stack[-len(txt_s):] == txt_s:
        # 같으면 txt_s의 길이 만큼 pop해서 삭제
        for _ in range(h):
            stack.pop()
        # 문자열 마저 넣기
        stack.append(txt[i])
    else:
        stack.append(txt[i])
# 마지막에 들어오는 문자열이 txt_s일때 안걸러져서 추가했음
# 스택의 마지막 문자열이 txt_s라면 pop 반복
if stack[-len(txt_s):] == txt_s:
    for _ in range(h):
        stack.pop()

if stack:
    print(''.join(stack))
else:
    print('FRULA')

 

'백준 문제풀이 > 자료구조' 카테고리의 다른 글

[백준] 2493 탑 - python  (0) 2023.01.27
[백준] 1874 스택수열 - python  (0) 2023.01.27
[백준] 9012 괄호 -python  (0) 2023.01.27
[백준] 10828 스택 -python  (0) 2023.01.27
[백준] 2164 카드2 -python  (0) 2023.01.27