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))