본문 바로가기
프로그래밍/알고리즘 풀이

[알고리즘] 백준 10866번: 덱 JAVA

by 방구석개발자 2020. 12. 27.
반응형


import java.io.*;
import java.util.ArrayDeque;

class MyDeque extends ArrayDeque<Integer>{
	StringBuilder sb;
	
	MyDeque(){
		super();
		sb = new StringBuilder();
	}
	
	void sendMethod(String[] strArr){
		switch (strArr[0]) {
		case "push_front"://정수 X를 덱의 앞에 넣는다.
			addFirst(Integer.parseInt(strArr[1]));
			break;
		case "push_back": //정수 X를 덱의 뒤에 넣는다.
			addLast(Integer.parseInt(strArr[1]));
			break;
		case "pop_front":
			Integer f=pollFirst();
			sb.append(f!=null?f:-1);
			sb.append("\n");
			break;
		case "pop_back":
			Integer b=pollLast();
			sb.append(b!=null?b:-1);
			sb.append("\n");
			break;
		case "size":
			sb.append(size());
			sb.append("\n");
			break;
		case "empty": //덱이 비어있으면 1을, 아니면 0을 출력한다.
			sb.append(isEmpty()?1:0);
			sb.append("\n");
			break;
		case "front": //덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
			sb.append(!isEmpty()?getFirst():-1);
			sb.append("\n");
			break;
		case "back": //덱의 가장 뒤에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
			sb.append(!isEmpty()?getLast():-1);
			sb.append("\n");
			break;
		}
	}

	@Override
	public String toString() {
		return sb.toString();
	}
}

public class Main {
	
	public static void main(String[] args) throws Exception{
		int N=0;
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		N = Integer.parseInt(br.readLine());
		MyDeque myStack=new MyDeque();
		for(int i=0;i<N;i++){
			String[]strArr=br.readLine().split(" ");
			myStack.sendMethod(strArr);
		}

		System.out.println(myStack.toString());
	}
}

 

반응형

댓글