■ 문제해결
왼쪽으로 커서가 이동할 경우 ('L') string(입력 문자열) 값에서 cursor 리스트에 push 시켜줍니다. 또한 오른쪽으로 커서가 이동할 경우 ('R') cursor 리스트에서 string(입력 문자열) 로 push 시켜줍니다.
이 후 cursor 리스트 값들은 LIFO 구조로 인해 문자열이 뒤집어져 있어서 리스트 속성을 이용해 문자열을 뒤집어 줍니다.
■ 문제해답
import sys
input = sys.stdin.readline
string = list(input().rstrip())
n = int(input())
cursor = []
for i in range(n):
m = input().split()
if m[0] == 'L' and string != []:
cursor.append(string.pop())
elif m[0] == 'D' and cursor != []:
string.append(cursor.pop())
elif m[0] == 'B' and string != []:
string.pop()
elif m[0] == 'P':
string.append(m[1])
print(''.join(string + cursor[::-1]))
■ 문제출처
https://www.acmicpc.net/problem/1406
1406번: 에디터
첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수
www.acmicpc.net
'Algoritm > BOJ' 카테고리의 다른 글
[BOJ] 1158번: 요세푸스 문제 (0) | 2022.09.11 |
---|---|
[BOJ] 10845번: 큐 (0) | 2022.09.06 |
[BOJ] 1874번: 스택 수열 (0) | 2022.09.06 |
[BOJ] 9012번: 괄호 (0) | 2022.09.06 |
[BOJ] 9093번: 단어 뒤집기 (0) | 2022.09.06 |