
n = input()
m = int(input())
c = len(n)
for i in range(m):
order, *word = input().split()
if order == 'L':
if c>0:
c -= 1
elif (order == 'P') :
n = n[:c]+word[0]+n[c:]
c+=1
elif order == 'D':
if c<len(n):
c += 1
elif order == 'B':
if c > 0:
n = n[:c-1]+n[c:]
c-=1
else:
pass
print(n)
각 버튼에 따른 분기로 코드를 작성해주면 된다.
근데 위에 코드처럼 하면 시간초과(무조건)가 뜬다.
왜냐면 파이썬은 immutable한 언어여서 슬라이싱한다고 잘린 부분이 사라지는 것이 아니기 때문.
게시판에서 나랑 같은 방식으로 짠 분이 질문을 올렸는데 댓글에 커서를 두고 좌우로 나눠보라고 해서 다시 짰다.
n = input()
m = int(input())
c = len(n)
left=list(n)
right=[]
for i in range(m):
order, *word = input().split()
if order == 'L':
if left:
right.append(left.pop())
elif (order == 'P') :
left.append(word[0])
elif order == 'D':
if right:
left.append(right.pop())
elif order == 'B':
if left:
left.pop()
else:
pass
print(''.join(left + right[::-1]))
실수한 부분은 직관적으로 right는 맨 왼쪽(맨 앞 숫자)을 pop해야 되는거 아냐?? 라고 생각해서 잘못 코딩 했고,
위의 사고의 연장으로 마지막 print에서도 그냥 단순하게 left+right로 밀어버렸다..ㅎㅎ
프린트 찍어보고 잘못된 걸 알고 수정했는데 이런 디테일이 전반적인 알고리즘을 짜는 것보다 늘 더 어렵다.

이와중에 여전히 python으로 하면 시간초과가 나는 ㅠ
거기까지는 시간낭비일듯싶어 pass.