본문 바로가기

Tech/Problem Solving

[백준 10866] 덱 (Java)

https://www.acmicpc.net/problem/10866

 

접근 방법

- java.util.ArrayDeque를 이용

 

 

덱(Deque)이란?

"큐의 양쪽 끝에서 삽입과 삭제가 모두 발생할 수 있는 큐로서, 큐와 스택의 성질을 모두 가지고 있는 자료구조이다."

출처: https://songeunjung92.tistory.com/25 [은져미]

 

 

최종 코드

import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Deque<Integer> deque = new ArrayDeque<>();
        int N = scanner.nextInt();
        String[] commands = new String[N];
        scanner.nextLine();

        for (int i = 0; i < N; i++) {
            commands[i] = scanner.nextLine();
        }

        for (int i = 0; i < N; i++) {
            String command = commands[i];
            switch (command.split(" ")[0]) {
                case "push_front":
                    deque.addFirst(Integer.parseInt(command.split(" ")[1]));
                    break;
                case "push_back":
                    deque.addLast(Integer.parseInt(command.split(" ")[1]));
                    break;
                case "pop_front":
                    if (deque.isEmpty()) {
                        System.out.println(-1);
                    } else {
                        System.out.println(deque.pollFirst());
                    }
                    break;
                case "pop_back":
                    if (deque.isEmpty()) {
                        System.out.println(-1);
                    } else {
                        System.out.println(deque.pollLast());
                    }
                    break;
                case "size":
                    System.out.println(deque.size());
                    break;
                case "empty":
                    if (deque.isEmpty()) {
                        System.out.println(1);
                    } else {
                        System.out.println(0);
                    }
                    break;
                case "front":
                    if (deque.isEmpty()) {
                        System.out.println(-1);
                    } else {
                        System.out.println(deque.peekFirst());
                    }
                    break;
                case "back":
                    if (deque.isEmpty()) {
                        System.out.println(-1);
                    } else {
                        System.out.println(deque.peekLast());
                    }
                    break;
            }
        }
    }
}

 

반응형

'Tech > Problem Solving' 카테고리의 다른 글

[백준 1182] 부분수열의 합 (Java)  (0) 2020.01.30
[백준 5430] AC (Java)  (0) 2020.01.27
[백준 1966] 프린터 큐 (Java)  (0) 2020.01.22
[백준 1874] 스택 수열 (Java)  (0) 2020.01.15
[백준 9012] 괄호 (Java)  (0) 2020.01.12