본문 바로가기

연습문제/JAVA

[백준 java] 5430 - AC

 

실제로 문자열을 뒤집으면 시간초과가 난다.

따라서 boolean형 변수 Reverse를 선언하고 만약 R이 들어오면 reverse != reverse 로 변경해주자

밑 코드는 for문마다 결과값을 ArrayList에 저장해야해서 마지막에 배열을 뒤집어서 저장했다

 

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class B5430 {
    static ArrayList<Integer> intArr = new ArrayList<>();
    static ArrayList<String> resArr = new ArrayList<>();
    static boolean reverse;
    static char[] charArr;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        for(int i=0; i<N; i++){
            reverse = false;
            charArr = sc.next().toCharArray();
            int n = sc.nextInt();
            // 문자열 입력받고 숫자만 int변환후 int배열에 저장
            String[] str = sc.next().replaceAll("\\[","").replaceAll("]","").split(",");
            if(n>0){
                for (String s : str) {
                    intArr.add(Integer.parseInt(s));
                }
            }
            calc();
            intArr.clear();
        }

        for(String s : resArr){
            System.out.println(s);
        }
    }

    private static void calc() {
        boolean error = false;
        for(char c : charArr){
            if(c=='R'){
            	// 실제로 뒤집으면 시간초과 따라서 reverse를 지정해두고 
                // 마지막 reverse가 true면 뒤집어서 출력하고 
                // 아니면 그냥 출력
                reverse = !reverse;
            } else if(c=='D'){
                if(intArr.size()<=0){
                    error = true;
                    break;
                }else{
                	//만약 reverse 상태면 제일 뒷쪽의 숫자를 제거해줘야한다
                    if(reverse) intArr.remove(intArr.size()-1);
                    if(!reverse) intArr.remove(0);
                }
            }
        }

        if(error){
            resArr.add("error");
        }else{
            if (reverse) {
                Collections.reverse(intArr);
            }
            resArr.add(intArr.toString().replace(" ",""));
        }
    }
}

 

'연습문제 > JAVA' 카테고리의 다른 글

[백준 java] 1717 - 집합의 표현 (Union-find)  (0) 2022.08.25
1717-집합의 표현 (오답)  (0) 2022.08.24
[백준 java] 3190-뱀  (0) 2022.08.22
[백준 java] 9012-괄호  (0) 2022.08.20
[백준 java] 3197-백조의 호수  (0) 2022.08.18