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

 

10866번: 덱

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

// 백준 10866번:덱
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		Deque<Integer> deque = new ArrayDeque();
		
		int n = scan.nextInt();
		Integer pop = null;
		for (int i = 0; i < n; i++) {
			String command = scan.next();
			switch(command) {
			case "push_front":
				int tmp1 = scan.nextInt();
				deque.addFirst(tmp1);
				break;
			case "push_back":
				int tmp2 = scan.nextInt();
				deque.addLast(tmp2);
				break;
			case "pop_front":
				pop = deque.poll();
				if (pop == null) {
					System.out.println("-1");
				} else {
					System.out.println(pop);
				}
				break;
			case "pop_back":
				pop = deque.pollLast();
				if (pop == null) {
					System.out.println("-1");
				} else {
					System.out.println(pop);
				}
				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.peekFirst() == null) {
					System.out.println("-1");
				} else {
					System.out.println(deque.peekFirst());
				}
				break;
			case "back":
				if (deque.peekLast() == null) {
					System.out.println("-1");
				} else {
					System.out.println(deque.peekLast());
				}
				break;
			default:
				System.out.println("존재하지 않는 명령어. 잘못 입력하심. 다시 입력 부탁");
				break;
			}
		}
		
		scan.close();
	}
	
}

+ Recent posts