[백준] 1406번: 에디터

jooo·2023년 1월 25일
0

백준

목록 보기
21/35
post-thumbnail

💻 문제 - 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를 띄우지 않게 한다.
profile
조금씩, 꾸준히, 자주

0개의 댓글