https://www.acmicpc.net/problem/10866
코드설명
Deque 자료구조 문제입니다.
처음으로 Deque라는 자료구조를 봤습니다.
Queue와 유사한데 큐의 경우 FirstInFirstOut의 규칙이있는데 이 Deque같은경우 맨 앞과 맨뒤에도 똑같이 pop, offer peek 과 같은 함수를 제공하고있습니다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Deque;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main {
public static int N;
public static Deque<Integer> dq = new LinkedList<>();
public static StringBuilder sb = new StringBuilder();
public static int answer = 0;
public static int lastWord = -1;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
for(int i=0;i<N;i++) {
st = new StringTokenizer(br.readLine());
String command = st.nextToken();
if(command.equals("push_front")) {
int x = Integer.parseInt(st.nextToken());
lastWord = x;
dq.addFirst(x);
}
else if(command.equals("push_back")) {
int x = Integer.parseInt(st.nextToken());
lastWord = x;
dq.addLast(x);
}
else if(command.equals("front")) {
if(dq.isEmpty()) {
sb.append(-1).append('\n');
// System.out.println("-1");
}else {
sb.append(dq.peekFirst()).append('\n');
// System.out.println(q.peek());
}
}
else if(command.equals("back")) {
if(dq.isEmpty()) {
sb.append(-1).append('\n');
// System.out.println("-1");
}else {
sb.append(dq.peekLast()).append('\n');
// System.out.println(lastWord);
}
}
else if(command.equals("size")) {
// System.out.println(q.size());
sb.append(dq.size()).append('\n');
}
else if(command.equals("empty")) {
if(dq.isEmpty()) {
sb.append(1).append('\n');
// System.out.println(1);
}else {
sb.append(0).append('\n');
// System.out.println(0);
}
}
else if(command.equals("pop_front")) {
if(dq.isEmpty()) {
sb.append(-1).append('\n');
// System.out.println("-1");
}else {
sb.append(dq.pollFirst()).append('\n');
// System.out.println(q.poll());
}
}
else if(command.equals("pop_back")) {
if(dq.isEmpty()) {
sb.append(-1).append('\n');
// System.out.println("-1");
}else {
sb.append(dq.pollLast()).append('\n');
// System.out.println(q.poll());
}
}
}
System.out.println(sb.toString());
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1966 프린터 큐 - 구현 + 큐 JAVA (0) | 2023.09.02 |
---|---|
[백준] 1935 후위 표기식2 - 자료구조 + 스택 JAVA (0) | 2023.09.02 |
[백준] 2164 카드2 - 큐 + 자료구조 JAVA (0) | 2023.09.02 |
[백준] 1158 요세푸스 문제 - 큐 + 자료구조 JAVA (0) | 2023.09.02 |
[백준] 18258 큐 2 - 큐 + 자료구조 JAVA (0) | 2023.09.02 |