[알고리즘]백준5430 AC -java

kimjingwon·2022년 8월 25일
0
post-custom-banner

1.문제

2.생각

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();
    }
}
post-custom-banner

0개의 댓글