문제링크
문제접근
- R 나올때 마다 뒤집지 말고 R여부를 boolean으로 체크
- D 가 나올 때 R 값에 따라 앞 or 뒤 빼기
- 마지막에 출력할 때 역시 R 값에 따라 앞부터 또는 뒤부터
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class baek_5430 {
static int T;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
T = Integer.parseInt(st.nextToken());
for(int t=0;t<T;t++){
String order = br.readLine();
int N = Integer.parseInt(br.readLine());
String numbers = br.readLine();
// st = new StringTokenizer(br.readLine(), "[],");
// for(int i=0;i<N;i++){
// list.add(Integer.parseInt(st.nextToken()));
// }
String substring = numbers.substring(1, numbers.length() - 1);
String[] split = substring.split(",");
ArrayList<Integer> list = new ArrayList<>();
if(N == 0 && order.contains("D")){
System.out.println("error");
continue;
}
for(int i=0;i<N;i++){
list.add(Integer.parseInt(split[i]));
}
boolean isReverse = false;
boolean isError = false;
for(int i=0;i<order.length();i++){
char now = order.charAt(i);
if(now == 'R') isReverse = !isReverse;
if(now == 'D'){
if(list.size() == 0){
isError = true;
break;
}
else if(!isReverse) list.remove(0);
else if(isReverse) list.remove(list.size()-1);
}
}
//////출력
StringBuilder sb = new StringBuilder();
if(isError){
System.out.println("error");
}
else if(!isReverse){
sb.append('[');
for(int i=0;i<list.size();i++){
sb.append(list.get(i));
if(i != list.size()-1) sb.append(',');
}
sb.append(']');
System.out.println(sb);
}
else{
sb.append('[');
for(int i=list.size()-1;i>=0;i--){
sb.append(list.get(i));
if(i != 0) sb.append(',');
}
sb.append(']');
System.out.println(sb);
}
//////출력
}
}
}
결과

정리
for(int i=0;i<split.length;i++){
list.add(Integer.parseInt(split[i]));
}
- 여기서 split.length일 때 런타임 에러 발생, N으로 바꾸니 해결
- 이유를 모르겠다
st = new StringTokenizer(br.readLine(), "[],");
for(int i=0;i<N;i++){
list.add(Integer.parseInt(st.nextToken()));
}
- StringTokenizer에서 두 번째 인자 값 활용 가능
- 입력 문자열에서 "[", "]" 빼는 것이 헷갈림