


reference
링크텍스트
import java.io.IOException;
import java.util.ArrayDeque;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
static boolean isRight;
static StringBuilder sb;
public static void main(String[] args) throws NumberFormatException, IOException {
// BufferedReader bReader = new BufferedReader(new InputStreamReader(System.in));
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
sb = new StringBuilder();
for (int tc = 0; tc < T; tc++) {
String p = sc.next();
int n = sc.nextInt();
// String string = bReader.readLine();
// String subString = string.substring(1, string.length() - 1);
// String[] s = subString.split(",");
// ArrayDeque<Integer> deque = new ArrayDeque<>();
// for (int i = 0; i < n; i++) {
// deque.add(Integer.parseInt(s[i]));
// } // 덱에 값 집어넣어줌
StringTokenizer st = new StringTokenizer(sc.next(), "[],");
ArrayDeque<Integer> deque = new ArrayDeque<Integer>();
// 덱에 배열 원소를 넣어준다.
for (int i = 0; i < n; i++) {
deque.add(Integer.parseInt(st.nextToken()));
}
ac(p, deque);
}
System.out.println(sb.toString());
}
static void ac(String p, ArrayDeque<Integer> deque) {
isRight = true;
for (int i = 0; i < p.length(); i++) {
if (p.charAt(i) == 'R') {
isRight = !isRight;
continue;
}
if (isRight) {
if (deque.pollFirst() == null) {
sb.append("error").append("\n");
return;
}
} else {
if (deque.pollLast() == null) {
sb.append("error").append("\n");
return;
}
}
}
print(deque);
}
static void print(ArrayDeque<Integer> deque) {
sb.append("[");
if (deque.size() > 0) {
if (isRight) {
sb.append(deque.pollFirst());
while (!deque.isEmpty()) {
sb.append(",").append(deque.pollFirst());
}
} else {
sb.append(deque.pollLast());
while (!deque.isEmpty()) {
sb.append(",").append(deque.pollLast());
}
}
}
sb.append("]").append("\n");
}
}

일단 정말 많이 틀렸다..
마지막에 통과가 된 이유는 StringBuilder를 쓴 것이 큰 것 같다.
그리고 다른 분의 코드를 참고하여 문자열 파싱을 해주었다.
새롭게 알게 된 사실!
StringTokenzier st = new StringTokenzier(sc.next(), "[], ");