💻 문제 - S2
- 하나의 리스트를 기준으로 insert와 remove 함수를 이용하면 O(n)을 소요하므로 시간 초과가 발생한다.
👉 제출 코드
import sys
stack1 = list(input())
stack2 = []
N = int(input())
for _ in range(N):
C = list(sys.stdin.readline().split())
if C[0] == 'L':
if stack1:
stack2.append(stack1.pop())
elif C[0] == 'D':
if stack2:
stack1.append(stack2.pop())
elif C[0] == 'B':
if stack1:
stack1.pop()
elif C[0] == 'P':
stack1.append(C[1])
print(''.join(stack1 + list(reversed(stack2))))
- 스택을 두개로 나누어 pop과 append한다: O(1).
- reverse가 아닌 reversed 함수를 사용하여 stack2에 값이 존재하지 않을 때 TypeError를 띄우지 않게 한다.