백준
백준 [10866]번: 덱 ( Java )
하루우울루
2023. 2. 13. 23:03
https://www.acmicpc.net/problem/10866
10866번: 덱
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
개발환경은 eclipse를 사용했습니다.
Code
import java.util.*;
import java.io.*;
public class Main
{
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
Deque<Integer> deque = new LinkedList<>();
StringTokenizer st;
int n = Integer.parseInt(br.readLine());
for(int i=0;i<n;i++)
{
st = new StringTokenizer(br.readLine()," ");
switch(st.nextToken())
{
case "push_front" :
{
int num = Integer.parseInt(st.nextToken());
deque.offerFirst(num);
break;
}
case "push_back" :
{
int num = Integer.parseInt(st.nextToken());
deque.offerLast(num);
break;
}
case "pop_front" :
{
Integer num = deque.pollFirst();
if(num == null)
{
sb.append(-1+"\n");
break;
}
else
{
sb.append(num+"\n");
break;
}
}
case "pop_back" :
{
Integer num = deque.pollLast();
if(num == null)
{
sb.append(-1+"\n");
break;
}
else
{
sb.append(num+"\n");
break;
}
}
case "size" :
{
sb.append(deque.size()+"\n");
break;
}
case "empty" :
{
boolean b = deque.isEmpty();
if(b)
{
sb.append(1+"\n");
break;
}
else
{
sb.append(0+"\n");
break;
}
}
case "front" :
{
Integer num = deque.peek();
if(num == null)
{
sb.append(-1+"\n");
break;
}
else
{
sb.append(num+"\n");
break;
}
}
case "back" :
{
Integer num = deque.peekLast();
if(num == null)
{
sb.append(-1+"\n");
}
else
{
sb.append(num+"\n");
}
}
}
}
System.out.print(sb);
}
}
덱의 기초문제인것 같다.
이전의 백준문제에서 큐와 큐2 문제가 이와 비슷한 문제였던 것이 기억에 난다.
같이 풀어보면 좋을 듯 하다.