입력
abcd
3
P x
L
P y
출력
abcdyx
s = input()
cursor = len(s)
m = int(input())
for _ in range(m):
x = input().split()
com = x[0]
if com == "P":
item = x[1]
s = s[0:cursor] + item + s[cursor:]
cursor += 1
elif com == "L":
if cursor != 0:
cursor -= 1
elif com == "D":
if cursor != len(s):
cursor += 1
elif com == "B":
if cursor != 0:
s = s[0:cursor-1] + s[cursor:]
cursor -= 1
print(s)
스택으로 풀어야 하는데 그냥 문자열로 풀어서 시간초과
문자열 길이가 최대 100,000개에 입력할 명령어 개수가 최대 500,000개라서 당연한 결과였다..
from collections import deque
s = deque(input())
s2 = deque()
m = int(input())
n = len(s)
for _ in range(m):
x = input().split()
com = x[0]
if com == "P":
item = x[1]
s.append(item)
elif com == "L" and s:
s2.appendleft(s.pop())
elif com == "D" and s2:
s.append(s2.popleft())
elif com == "B" and s:
s.pop()
print(''.join(s+s2))
이것도 시간초과..
import sys
s = list(sys.stdin.readline().strip())
s2 = []
m = int(sys.stdin.readline())
n = len(s)
for _ in range(m):
x = sys.stdin.readline().strip().split()
com = x[0]
if com == "P":
item = x[1]
s.append(item)
elif com == "L" and s:
s2.append(s.pop())
elif com == "D" and s2:
s.append(s2.pop())
elif com == "B" and s:
s.pop()
print(''.join(s+list(reversed(s2))))
import sys로 input받는 습관을 기르자