R일경우 배열을 뒤집고
D일경우 첫번째 원소 삭제인데
테스트케이스개수 최대 100,
수행할 함수 p는 100,000
배열의 사이즈는 100,000이다
시간제한이 1초이기 때문에 o(n)이 1억을 넘기면 안된다.
그러면 테스트개수 * 배열사이즈만 해도 1억이 넘는다.
시간을 줄여야한다.
R일경우 실제 배열을 뒤집는 것은 굉장히 오래걸린다.
그래서 R일경우 배열은 가만히 냅두고 지워야되는 인덱스값만 변경하도록했다.
import java.io.*;
public class baekjoon5430 {
public static void main(String[]args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));
int count = Integer.parseInt(bufferedReader.readLine());
Boolean errors=false;
for(int i=0;i<count;i++){
String a= bufferedReader.readLine();
int size = Integer.parseInt(bufferedReader.readLine());
int ab[]=new int[size];
String sab[]=new String[size];
String ss = bufferedReader.readLine();
if(ss.equals("[]") && a.contains("D")){
bufferedWriter.write("error"+"\n");
continue;
}
else if(ss.equals("[]")){
bufferedWriter.write("[]"+"\n");
continue;
}
String ass=ss.substring(1,ss.length()-1);
String[] asbb=ass.split("\\D+");
for(int j=0;j< asbb.length;j++){
if(asbb[j]!=""){
ab[j]=Integer.parseInt(asbb[j]);
}
}
String[]abc=a.split("");
int deleteindex=0;
int Adeleteindex=ab.length-1;
int absize=ab.length-1;
int Dcount=0,Rcount=0;
Boolean y=true;
for(int j=0;j<abc.length;j++){
if(abc[j].equals("R")){
//배열뒤집기
if(y){
y=false;
}
else{
y=true;
}
Rcount++;
}
else if(abc[j].equals("D")){
Dcount++;
if(Dcount>ab.length){
errors=true;
break;
}
if(y){
ab[deleteindex]=0;
deleteindex++;
}
else{
ab[Adeleteindex]=0;
Adeleteindex--;
}
}
}
if(errors){
bufferedWriter.write("error"+"\n");
errors=false;
continue;
}
if(Rcount%2==0){
int acount=0;
for(int j=0;j<ab.length;j++){
if(ab[j]!=0){
if(acount==0){
bufferedWriter.write("["+ab[j]);
}
else{
bufferedWriter.write(","+ab[j]);
}
acount++;
}
}
if(acount==0){
bufferedWriter.write("[");
//System.out.print("[");
}
bufferedWriter.write("]"+"\n");
}
else {
int acount=0;
for(int j=ab.length-1;j>=0;j--){
if(ab[j]!=0){
if(acount==0){
bufferedWriter.write("["+ab[j]);
}
else{
bufferedWriter.write(","+ab[j]);
}
acount++;
}
}
if(acount==0){
bufferedWriter.write("[");
}
bufferedWriter.write("]"+"\n");
}
}
bufferedWriter.flush();
bufferedWriter.close();
}
}