'B' 명령어인 경우 왼쪽에 있는 문자를 삭제해야 하는데,
ListIterator의 remove()는 현재 오른쪽을 대상으로 삭제하므로 previous()로 이동한 후 실행해야 하는 점 주의
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
LinkedList<Character> list = new LinkedList<>();
for(int i = 0; i < str.length(); i++){
list.add(str.charAt(i));
}
int commandN = Integer.parseInt(br.readLine());
ListIterator<Character> it = list.listIterator();
while(it.hasNext()){
it.next();
}
for(int i = 0; i < commandN; i++){
String command = br.readLine();
if(command.equals("L")){
if(it.hasPrevious()){
it.previous();
}
}else if(command.equals("D")){
if(it.hasNext()){
it.next();
}
}else if(command.equals("B")){
if(it.hasPrevious()){
it.previous();
it.remove();
}
}else{ // firstChar == P
it.add(command.charAt(2));
}
}
StringBuilder sb = new StringBuilder("");
while(!list.isEmpty()){
sb.append(list.poll());
}
System.out.println(sb);
}
}