1. 문제 링크
2. 문제 및 입출력예제
3. 문제 풀이
ArrayDeque 자료구조를 이용해 구현했다.
4. 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
ArrayDeque<Integer> deque = new ArrayDeque<Integer>();
for (int i = 0; i < N; i++) {
String[] split = br.readLine().split(" ");
switch (split[0]) {
case "push_front": {
deque.addFirst(Integer.parseInt(split[1]));
break;
}
case "push_back": {
deque.addLast(Integer.parseInt(split[1]));
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);
}
}
'ALGORITHM' 카테고리의 다른 글
백준 1991 트리 순회 (Java) (0) | 2023.02.21 |
---|---|
백준 1158 요세푸스 문제 (Java) (0) | 2023.02.20 |
백준 10972 다음 순열 (Java) (0) | 2023.02.18 |
백준 9655 돌 게임 (Java) (0) | 2023.02.17 |
백준 11727 2xn 타일링 2 (Java) (0) | 2023.02.16 |