알고리즘
- 자료 구조
- 큐

Deque 메소드
- deque.append(x) : x를 데크의 오른쪽 끝에 삽입한다
- deque.appendleft(x) : x를 데크의 왼쪽 끝에 삽입한다
- deque.pop() : 데크의 오른쪽 끝 엘리먼트를 가져오는 동시에 데크에서는 삭제한다
- deque.popleft() : 데크의 왼쪽 끝 엘리먼트를 가져오는 동시에 데크에서는 삭제한다
- deque.extend(array) : 배열 array를 순환하면서 데크의 오른쪽에 추가한다
- deque.extendleft(array) : 배열 array를 순환하면서 데크의 왼쪽에 추가한다
- deque.remove(x) : x를 데크에서 찾아 삭제한다
- deque.rotate(num) : 데크를 num만큼 회전한다 (양수면 오른쪽, 음수는 왼쪽으로)
int N=Integer.parseInt(br.readLine());
Deque<Integer> dq=new ArrayDeque<>();
switch (st.nextToken()){
case "push": //값 추가
dq.addLast(Integer.valueOf(st.nextToken())); break;
case "pop": //맨 앞 값 삭제 및 출력
if(!dq.isEmpty()){
System.out.println(dq.peekFirst());
dq.removeFirst();}
else {System.out.println(-1);} break;
case "size": //크기 조회
System.out.println(dq.size()); break;
case "empty": //비어있는가?
if(!dq.isEmpty()){System.out.println(0);}
else{System.out.println(1);} break;
case "front": //맨 앞 조회
if(!dq.isEmpty()){System.out.println(dq.peekFirst());}
else {System.out.println(-1);} break;
case "back": //맨 뒤 조회
if(!dq.isEmpty()){System.out.println(dq.peekLast());}
else {System.out.println(-1);} break;
}
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int N=Integer.parseInt(br.readLine());
Deque<Integer> dq=new ArrayDeque<>();
for(int i=0; i<N; i++){
StringTokenizer st=new StringTokenizer(br.readLine());
switch (st.nextToken()){
case "push": //값 추가
dq.addLast(Integer.valueOf(st.nextToken())); break;
case "pop": //맨 앞 값 삭제 및 출력
if(!dq.isEmpty()){
System.out.println(dq.peekFirst());
dq.removeFirst();}
else {System.out.println(-1);} break;
case "size": //크기 조회
System.out.println(dq.size()); break;
case "empty": //비어있는가?
if(!dq.isEmpty()){System.out.println(0);}
else{System.out.println(1);} break;
case "front": //맨 앞 조회
if(!dq.isEmpty()){System.out.println(dq.peekFirst());}
else {System.out.println(-1);} break;
case "back": //맨 뒤 조회
if(!dq.isEmpty()){System.out.println(dq.peekLast());}
else {System.out.println(-1);} break;
}
}
}
}