백준(Backjoon) 10866, 덱

2021. 6. 25. 16:58CodingTest

문제풀이

Deque 클래스를 선언하고 필드 멤버로 List<Integer> 리스트를 선언한다.

 

소스코드

public class Main {
	static class Deque
	{
		private List<Integer> deque;
		
		Deque()
		{
			deque = new ArrayList<Integer>();
		}
		
		void push_front(int x)
		{
			deque.add(0, x);
		}
		void push_back(int x)
		{
			deque.add(x);
		}
		int pop_front()
		{
			if(empty()==1)
			{
				return -1;
			}
			return deque.remove(0);
		}
		int pop_back()
		{
			if(empty()==1)
			{
				return -1;
			}
			return deque.remove(size()-1);
		}
		int size()
		{
			return deque.size();
		}
		int empty()
		{
			return (size()!=0 ? 0 : 1);
		}
		int front()
		{
			if(empty()==1)
			{
				return -1;
			}
			return deque.get(0);
		}
		int back()
		{
			if(empty()==1)
			{
				return -1;
			}
			return deque.get(size()-1);
		}
		
	}
	
	public static void main(String args[]) throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n = Integer.parseInt(br.readLine());
		Deque d = new Deque();
		for(int i=0;i<n;i++)
		{
			String[] cmd = br.readLine().split(" ");
			
			switch(cmd[0])
			{
			case "push_front":
				d.push_front(Integer.parseInt(cmd[1]));
				break;
			case "push_back":
				d.push_back(Integer.parseInt(cmd[1]));
				break;
			case "pop_front":
				System.out.println(d.pop_front());
				break;
			case "pop_back":
				System.out.println(d.pop_back());
				break;
			case "size":
				System.out.println(d.size());
				break;
			case "empty":
				System.out.println(d.empty());
				break;
			case "front":
				System.out.println(d.front());
				break;
			case "back":
				System.out.println(d.back());
				break;
				
			}
		}
		
	}
}