ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java 10866 덱
    PS 2023. 5. 4. 00:10

     

    풀이 :

    고정된 크기의 int형 배열을 생성한 뒤 index를 가운데에서 설정하고 생성해주었습니다.

    이전에 풀었던 스택 구현 문제와 기능만 더 구현하면 되는 문제라 쉽게 풀 수 있었던 문제였습니다.

     

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.StringTokenizer;
    
    public class Main {
    
        static class CustomDeque {
            private int[] deque;
            private int front;
            private int rear;
            private int size;
    
            public CustomDeque(){
                this.deque = new int[20001];
                this.front = 10000;
                this.rear = 10000;
                this.size = 0;
            }
    
            public void pushFront(int n){
                deque[front] = n;
                front--;
                size++;
            }
    
            public void pushRear(int n) {
                rear++;
                deque[rear] = n;
                size ++;
            }
            public int popFront(){
                if(size == 0){
                    return -1;
                }
                int i = deque[front + 1];
                front ++;
                size --;
                return i;
            }
            public int popBack(){
                if(size == 0){
                    return -1;
                }
                int i = deque[rear];
                rear--;
                size--;
                return i;
            }
    
            public int size(){
                return size;
            }
    
            public int empty(){
                if (size == 0) {
                    return 1;
                } else {
                    return 0;
                }
            }
            public int front(){
                if(size == 0){
                    return -1;
                }
                return deque[front + 1];
            }
            public int back(){
                if(size == 0){
                    return -1;
                }
                return deque[rear];
            }
        }
    
        public static void main(String[] args) throws IOException{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int n = Integer.parseInt(br.readLine());
            CustomDeque deque = new CustomDeque();
            StringTokenizer st;
            StringBuilder sb = new StringBuilder();
            for(int i = 0 ; i < n; i++){
                st = new StringTokenizer(br.readLine());
                String str = st.nextToken();
                switch (str) {
                    case "push_front":
                        int j = Integer.parseInt(st.nextToken());
                        deque.pushFront(j);
                        break;
                    case "push_back":
                        int k = Integer.parseInt(st.nextToken());
                        deque.pushRear(k);
                        break;
                    case "pop_front":
                        int i1 = deque.popFront();
                        sb.append(i1).append("\n");
                        break;
                    case "pop_back":
                        int i2 = deque.popBack();
                        sb.append(i2).append("\n");
                        break;
                    case "size":
                        int size = deque.size();
                        sb.append(size).append("\n");
                        break;
                    case "empty":
                        int empty = deque.empty();
                        sb.append(empty).append("\n");
                        break;
                    case "front":
                        int front = deque.front();
                        sb.append(front).append("\n");
                        break;
                    case "back":
                        int back = deque.back();
                        sb.append(back).append("\n");
                        break;
                    default:
                        break;
                }
            }
            System.out.println(sb);
        }
    }

    'PS' 카테고리의 다른 글

    Java 10870 피보나치 수 5  (0) 2023.05.04
    Java 17413 단어 뒤집기2  (0) 2023.05.04
    Java 9095 1, 2, 3 더하기  (0) 2023.05.04
    Java 10773 제로  (0) 2023.05.02
    Java 2164 카드2  (0) 2023.05.02
Designed by Tistory.