그냥 시물레이션이다. 뒤집기도 있고 삭제도 있는데 뒤집은 상태냐 아니냐에 따라서 앞에서 삭제할지 뒤에서 삭제할지 달라지기 때문에 boolean 값을 통해 뒤집은 상태인지 아닌지 설정했다.
그리고 입력받은 원소들을 저장하는 것에서 시간을 좀 보냈다. 내가 한 방법은 replace를 통해 "["랑 "]"이거를 없애주고 , 단위로 나눠서 배열에 저장했다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Deque;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int testCase = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for(int t=0;t<testCase;t++) {
String[] command = br.readLine().split("");
int len = Integer.parseInt(br.readLine());
//순서가 순차적인지 아니면 역방향인지 체크
boolean rightDire = true;
Deque<String> deque = new LinkedList<>();
String[] numbers = br.readLine().replace("[", "").replace("]", "").split(",");
// System.out.println(Arrays.toString(numbers));
for(int i=0;i<numbers.length;i++) {
deque.add(numbers[i]);
}
// System.out.println(deque.peek().equals(""));
boolean isError = false;
for(int i=0;i<command.length;i++) {
String currentCommand = command[i];
// System.out.println(deque.size());
if(currentCommand.equals("R")) {
rightDire = !rightDire;
} else {
if(deque.size() == 0 || deque.peek().equals("")) {
sb.append("error").append("\n");
isError = true;
break;
}
if(rightDire) {
deque.pollFirst();
} else {
deque.pollLast();
}
}
}
if(isError) {
continue;
}
sb.append("[");
while(!deque.isEmpty()) {
if(rightDire) {
// System.out.println(deque.pollFirst());
sb.append(deque.pollFirst());
}
else {
// System.out.println(deque.pollLast());
sb.append(deque.pollLast());
}
if(!deque.isEmpty())
sb.append(",");
}
sb.append("]").append("\n");
}
System.out.println(sb.toString());
}
}