import sys
str = list(input())
count = int(input())
cursor = len(str)
for i in range(count):
commend = sys.stdin.readline().split()
if commend[0] == "P":
str.insert(cursor,commend[1])
cursor += 1
elif commend[0] == "L" and cursor != 0:
cursor -= 1
elif commend[0] == "D" and cursor < len(str):
cursor += 1
elif commend[0] == "B" and cursor != 0:
del str[cursor-1]
cursor -= 1
for i in str:
print(i,end='')
직관적으로 insert와 del을 통해 구현해보았다
동작은 하지만 시간초과가 난다
스택을 사용하라는 의도로 파악되어 다른 사람의 코드를 참고하여 재구현하였다
import sys
stack_1 = list(sys.stdin.readline().rstrip())
stack_2 = []
for i in range(int(sys.stdin.readline())):
commend = sys.stdin.readline().split()
if commend[0] == "P":
stack_1.append(commend[1])
elif commend[0] == "L":
if stack_1:
stack_2.append(stack_1.pop())
elif commend[0] == "D" :
if stack_2:
stack_1.append(stack_2.pop())
elif commend[0] == "B":
if stack_1:
stack_1.pop()
stack_1.extend(reversed(stack_2))
print("".join(stack_1))
sys를 통해 입력 시간을 최소화하고 두개의 스택을 사용하여 시간초과를 해결하였다
'알고리듬' 카테고리의 다른 글
[1158] 조세퍼스 (0) | 2022.02.18 |
---|---|
[10845] 큐 (0) | 2022.02.15 |
[1874] 스택 수열 (0) | 2022.01.26 |
[9012] 괄호 (0) | 2022.01.18 |
[9093] 단어 뒤집기 (0) | 2022.01.17 |