문제
https://www.acmicpc.net/problem/10866
문제 설명
문제 풀이
덱은 디큐(deque)라고도 불리며, 양쪽 끝에서 추가와 삭제가 가능한 자료구조다.
자바에서는 ArrayDeque와 LinkedList를 사용하여 구현할 수 있다.
Deque의 연산
코드
import java.util.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
ArrayDeque<Integer> dq = new ArrayDeque<>();
int n = Integer.parseInt(br.readLine());
while(n-- > 0) {
String[] str = br.readLine().split(" ");
if(str[0].equals("push_back")) {
dq.offerLast(Integer.parseInt(str[1]));
}
else if(str[0].equals("push_front")) {
dq.offerFirst(Integer.parseInt(str[1]));
}
else if(str[0].equals("pop_front")) {
if(dq.isEmpty()) {
bw.write("-1\n");
}
else {
bw.write(dq.pollFirst() + "\n");
}
}
else if(str[0].equals("pop_back")) {
if(dq.isEmpty()) {
bw.write("-1\n");
}
else {
bw.write(dq.pollLast() + "\n");
}
}
else if(str[0].equals("size")) {
bw.write(dq.size() + "\n");
}
else if(str[0].equals("empty")) {
if(dq.isEmpty()) {
bw.write("1\n");
}
else {
bw.write("0\n");
}
}
else if(str[0].equals("front")) {
if(dq.isEmpty()) {
bw.write("-1\n");
}
else {
bw.write(dq.peekFirst() + "\n");
}
}
else if(str[0].equals("back")) {
if(dq.isEmpty()) {
bw.write("-1\n");
}
else {
bw.write(dq.peekLast() + "\n");
}
}
}
bw.flush();
}
}
'🧑💻코딩 테스트 > 백준 (BOJ)' 카테고리의 다른 글
[코딩테스트/백준 알고리즘] 10816번 : 숫자 카드 2 (Java, 자바 풀이) (0) | 2022.08.03 |
---|---|
[코딩테스트/백준 알고리즘] 2164번 : 카드2 (Java, 자바 풀이) (0) | 2022.08.03 |
[코딩테스트/백준 알고리즘] 10814번 : 나이순 정렬 (Java, 자바 풀이) (0) | 2022.08.03 |
[코딩 테스트/백준 알고리즘] 1295번 : 팰린드롬수(Java 풀이) (0) | 2022.08.01 |
[코딩 테스트/백준 알고리즘] 11650번 : 좌표 정렬하기 (Java 풀이) (0) | 2022.08.01 |
댓글