



내가 생각했을때 문제에서 원하는부분
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다.
주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.
출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.
내가 이 문제를 보고 생각해본 부분
덱을 사용해서 구현하게했다.
코드로 구현
package baekjoon.baekjoon_19;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;
// 백준 10866번 문제
public class Main664 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
Deque<Integer> deque = new ArrayDeque<Integer>();
for(int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String S = st.nextToken();
switch (S) {
case "push_front" :
deque.addFirst(Integer.parseInt(st.nextToken()));
break;
case "push_back" :
deque.addLast(Integer.parseInt(st.nextToken()));
break;
case "pop_front" :
if(deque.isEmpty()) sb.append(-1).append("\n");
else sb.append(deque.pollFirst()).append("\n");
break;
case "pop_back" :
if(deque.isEmpty()) sb.append(-1).append("\n");
else sb.append(deque.pollLast()).append("\n");
break;
case "size" :
sb.append(deque.size()).append("\n");
break;
case "empty" :
if(deque.isEmpty()) sb.append(1).append("\n");
else sb.append(0).append("\n");
break;
case "front" :
if(deque.isEmpty()) sb.append(-1).append("\n");
else sb.append(deque.peekFirst()).append("\n");
break;
case "back" :
if(deque.isEmpty()) sb.append(-1).append("\n");
else sb.append(deque.peekLast()).append("\n");
break;
}
}
System.out.println(sb);
br.close();
}
}

이번에는 자료구조에서 나오는 덱을 사용해서 코드를 구현했다. 처음에는 조금 어렵게 느껴졌는데 이번에 구현하면서 어렵지는 않았다.