import java.util.Scanner;
public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		
		int commandCt = Integer.parseInt(sc.nextLine());
		String commandLine = null;
		
		ArrayDeck deck = new ArrayDeck(commandCt);
		
		for(int i = 1; i <= commandCt; i++){
			commandLine = sc.nextLine();
			String[] temp = commandLine.split(" ");
			
			if(temp[0].equals("push_front")){
				deck.push_front(Integer.parseInt(temp[1]));
			}else if(temp[0].equals("push_back")){
				deck.push_back(Integer.parseInt(temp[1]));
			}else if(temp[0].equals("pop_front")){
				System.out.println(deck.pop_front());
			}else if(temp[0].equals("pop_back")){
				System.out.println(deck.pop_back());
			}else if(temp[0].equals("size")){
				System.out.println(deck.size());
			}else if(temp[0].equals("empty")){
				System.out.println(deck.empty());
			}else if(temp[0].equals("front")){
				System.out.println(deck.front());
			}else if(temp[0].equals("back")){
				System.out.println(deck.back());
			}
		}
		sc.close();
	}
	
	
}
class ArrayDeck{
	private int[] deck;
	private int rear = -1;
	
	public ArrayDeck(int n){
		deck = new int[n];
	}
	
	public void push_front(int value){
		rear++;
		for(int i=rear;i>0;i--){
                                deck[i]=deck[i-1];
                              }
		deck[0] = value;
	}
	
	public void push_back(int value){
		rear++;
		deck[rear] = value;
	}
	
	public int pop_front(){
		if(rear <= -1){
			return -1;
		}
		int temp = deck[0];
		for(int i=0;i<rear;i++){
                                deck[i]=deck[i+1];
}
		rear--;
		return temp;
	}
	
	public int pop_back(){
		if(rear <= -1){
			return -1;
		}
		int temp  = deck[rear];
		rear--;
		
		return temp;
	}
	
	public int size(){
		if(rear <= -1){
			return 0;
		}else{
			return rear + 1;
		}
	}
	
	public int empty(){
		if(rear <= -1){
			return 1;
		}else{
			return 0;
		}
	}
	
	public int front(){
		if(rear <= -1){
			return -1;
		}else{
			return deck[0];
		}
	}
	public int back(){
		if(rear <= -1){
			return -1;
		}else{
			return deck[rear];
		}
	}
}
'알고리즘(Java) > 덱' 카테고리의 다른 글
| 백준 1021번 회전하는 큐 (0) | 2017.11.29 | 
|---|---|
| 백준 1158 조세퍼스 문제 0 (0) | 2017.11.23 | 
| [자료구조]덱(Deque) (0) | 2017.11.23 |