https://www.acmicpc.net/problem/10866
접근 방법
- java.util.ArrayDeque를 이용
덱(Deque)이란?
"큐의 양쪽 끝에서 삽입과 삭제가 모두 발생할 수 있는 큐로서, 큐와 스택의 성질을 모두 가지고 있는 자료구조이다."
출처: https://songeunjung92.tistory.com/25 [은져미]
최종 코드
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Deque<Integer> deque = new ArrayDeque<>();
int N = scanner.nextInt();
String[] commands = new String[N];
scanner.nextLine();
for (int i = 0; i < N; i++) {
commands[i] = scanner.nextLine();
}
for (int i = 0; i < N; i++) {
String command = commands[i];
switch (command.split(" ")[0]) {
case "push_front":
deque.addFirst(Integer.parseInt(command.split(" ")[1]));
break;
case "push_back":
deque.addLast(Integer.parseInt(command.split(" ")[1]));
break;
case "pop_front":
if (deque.isEmpty()) {
System.out.println(-1);
} else {
System.out.println(deque.pollFirst());
}
break;
case "pop_back":
if (deque.isEmpty()) {
System.out.println(-1);
} else {
System.out.println(deque.pollLast());
}
break;
case "size":
System.out.println(deque.size());
break;
case "empty":
if (deque.isEmpty()) {
System.out.println(1);
} else {
System.out.println(0);
}
break;
case "front":
if (deque.isEmpty()) {
System.out.println(-1);
} else {
System.out.println(deque.peekFirst());
}
break;
case "back":
if (deque.isEmpty()) {
System.out.println(-1);
} else {
System.out.println(deque.peekLast());
}
break;
}
}
}
}
반응형
'Tech > Problem Solving' 카테고리의 다른 글
[백준 1182] 부분수열의 합 (Java) (0) | 2020.01.30 |
---|---|
[백준 5430] AC (Java) (0) | 2020.01.27 |
[백준 1966] 프린터 큐 (Java) (0) | 2020.01.22 |
[백준 1874] 스택 수열 (Java) (0) | 2020.01.15 |
[백준 9012] 괄호 (Java) (0) | 2020.01.12 |