Tech/Problem Solving
[백준 10866] 덱 (Java)
Bellroute
2020. 1. 16. 02:31
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;
}
}
}
}
반응형