본문 바로가기
프로그래밍/알고리즘 풀이

[알고리즘] 백준 1966번 AC큐 Java

by 방구석개발자 2021. 4. 22.
반응형

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Iterator;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        for(int i=0;i<N;i++){
            String trans=br.readLine();
            int dequeSize = Integer.parseInt(br.readLine());
            String input=br.readLine();
            Deque<Integer> deque=createDeque(dequeSize,input);
            System.out.println(print(deque,trans));
        }
    }

    public static Deque<Integer> createDeque(int size,String input){
        Deque<Integer> deque=new ArrayDeque<Integer>();
        StringTokenizer st = new StringTokenizer(input.substring(1, input.length() - 1), ",");

        for(int i=0;i<size;i++){
            deque.add(Integer.parseInt(st.nextToken()));
        }
        return deque;

    }

    public static String print(Deque<Integer> deque, String trans) {
        boolean isAscending=true;
        for (char ch:trans.toCharArray()) {
            switch (ch){
                case 'R':
                    isAscending=!isAscending;
                    break;
                case 'D':
                    if(!deque.isEmpty()) {
                        if (isAscending) deque.removeFirst();
                        else deque.removeLast();
                    }else return "error";
                    break;
            }
        }
        Iterator<Integer> it = isAscending?deque.iterator():deque.descendingIterator();
        if (! it.hasNext())
            return "[]";

        StringBuilder sb = new StringBuilder();
        sb.append('[');
        for (;;) {
            Integer e = it.next();
            sb.append(e);
            if (! it.hasNext())
                return sb.append(']').toString();
            sb.append(',');
        }
    }
}

자바 Dueque를 이용하여 구현하였습니다.

테스트 케이스 하나 더 추가해서 테스트 후에 제출하는게 좋을거같습니다.

배열이 없거나 하나일때 R 함수는 에러가 나지 않게 해줘야 합니다.

입력

2
R
0
[]
R
1
[1]

 

출력

[]

[1]

 

 

반응형

댓글