문제

접근 방식
(1) 덱 으로 구현한다.
(2) 명령의 수 N을 입력받는다.
(3) N번 반복하며 다음을 수행한다.
- 명령을 입력 받는다.
- 명령의 첫 단어로부터 명령어를 추출한다.
- switch문을 사용하여 명령어에 따라 메서드들을 수행시킨다.
제출한 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;
public class Main {
public satic 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> deq = new ArrayDeque<>();
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String S = st.nextToken();
switch (S) {
case "push_front" :
deq.addFirst(Integer.parseInt(st.nextToken()));
break;
case "push_back" :
deq.addLast(Integer.parseInt(st.nextToken()));
break;
case "pop_front" :
if (deq.isEmpty()) sb.append(-1 + "\n");
else sb.append(deq.pollFirst() + "\n");
break;
case "pop_back" :
if (deq.isEmpty()) sb.append(-1 + "\n");
else sb.append(deq.pollLast() + "\n");
break;
case "size" :
sb.append(deq.size() + "\n");
break;
case "empty" :
if (deq.isEmpty()) sb.append(1 + "\n");
else sb.append(0 + "\n");
break;
case "front" :
if (deq.isEmpty()) sb.append(-1 + "\n");
else sb.append(deq.peekFirst() + "\n");
break;
case "back" :
if (deq.isEmpty()) sb.append(-1 + "\n");
else sb.append(deq.peekLast() + "\n");
break;
}
}
System.out.println(sb);
}
}