Algorithm
[백준] 1406 에디터 파이썬
Titan.
2023. 2. 7. 03:34
https://www.acmicpc.net/problem/1406
1406번: 에디터
첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수
www.acmicpc.net
이 문제는 문제 그대로 알고리즘으로 옮길 경우 시간초과가 발생하므로 약간의 트릭을 사용하여 알고리즘을 짜야한다.
편집기에서 수정할 문자열을 하나만 만드는 것이 아니라, 커서를 기준으로 앞부분 문자열과 뒷부분 문자열을 나누는 것이다.
from sys import stdin
s1 = list(input())
s2 = []
i = len(s1)
for _ in range(int(input())):
c = stdin.readline().strip()
if c == 'L':
if s1:
s2.append(s1.pop())
elif c == 'D':
if s2:
s1.append(s2.pop())
elif c == 'B':
if s1:
s1.pop()
else:
s1.append(c.split()[1])
s1.extend(reversed(s2))
print(''.join(s1))
s2 에는 커서뒤의 문자열들이 뒤집혀서 삽입되므로 최종적으로 reversed() 메소드를 이용해 뒤집어준 뒤 s1과 합쳐 출력한다.