[백준] 9935 : 문자열 폭발

letsbebrave·2022년 4월 14일
0

codingtest

목록 보기
103/146
post-thumbnail

문제

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

문자열의 앞에서부터 스택에 넣으면서 타겟의 마지막 값과 현재 리스트의 값이 같으면 타겟의 문자열 길이만큼 스택에서 슬라이싱을 한 것을 타겟과 같은지 비교하고 타겟의 길이만큼 pop()을 해주는 로직이다.

다른 분들의 힌트를 듣고 푼 문제!

+)
문자들을 리스트로 하나씩 받고 싶으면 문자열을 그냥 입력받은 다음에 list()에 넣어주면 된다.
그러면 문자열들의 문자가 하나씩 리스트에 쌓인다.

풀이

import sys

w = list(sys.stdin.readline().strip()) # 스택
t = list(sys.stdin.readline().strip())
stack = []

for i in range(len(w)):
    stack.append(w[i])
    if stack and w[i] == t[-1]: # 타겟의 마지막 값과 w 리스트의 현재 값이 같으면
        if stack[-len(t):] == t:
            for j in range(len(t)):
                stack.pop()

if not stack:
    print("FRULA")
else:
    print("".join(stack))
profile
그게, 할 수 있다고 믿어야 해

0개의 댓글