Algoritm/BOJ

[BOJ] 1406번: 에디터

twoDeveloper 2022. 9. 6. 17:23

■ 문제해결

왼쪽으로 커서가 이동할 경우 ('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