
풀이
- 이전에 못풀었던 문제인데 다시 풀어보았다.. 근데 진짜 마의 16%에서 계속 오류가 떴다😂

- 마의 16%를 해결하니 시간초과가 떴다. 이유는 나는 원래 deque를 비워버리고 거꾸로 된 배열을 넣어주고 거기서 반복을 돌려 답을 구했었다. 이걸 해결하기 위해 반대로 뽑는 상황일 때 / 일반적으로 뽑을 때를 나눠서 마지막에 StringBuilder에 append 해줬다. 더더더더 노력하자
package problem_solving.deque;
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Deque;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.regex.Pattern;
public class BaekJoon_5430 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = Integer.parseInt(sc.next());
while(t-- > 0) {
Boolean flag = true;
boolean reverseFlag = false;
String p = sc.next();
int size = Integer.parseInt(sc.next());
String [] arr = sc.next().split(",");
Deque<Integer> dq = new LinkedList<>();
for(int i= 0 ; i < arr.length; i++) {
String s = arr[i];
if(arr.length == 1 ) {
s = s.substring(1);
s = s.substring(0,s.length()-1);
if( s.length()== 0 ) {
break;
}
dq.offer(Integer.parseInt(s));
break;
}
if( i == 0 ) {
s = s.substring(1);
} else if (i == arr.length-1) {
s = s.substring(0,s.length()-1);
}
dq.offer(Integer.parseInt(s));
}
for(int i =0 ; i < p.length();i++) {
char c = p.charAt(i);
if( c == 'D') {
if( dq.isEmpty()) {
System.out.println("error");
flag = false;
break;
} else {
if( reverseFlag) {
dq.pollLast();
} else {
dq.pollFirst();
}
}
} else if( c== 'R') {
reverseFlag = !reverseFlag;
}
}
if( flag ) {
if( dq.isEmpty()) {
System.out.println("[]");
continue;
}
StringBuilder sb = new StringBuilder("[");
while(!dq.isEmpty()) {
if (reverseFlag) {
sb.append(dq.pollLast());
} else {
sb.append(dq.pollFirst());
}
if (!dq.isEmpty()) sb.append(",");
}
sb.append("]");
System.out.println(sb.toString());
}
}
}
}