백준

백준 [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 문제가 이와 비슷한 문제였던 것이 기억에 난다.

같이 풀어보면 좋을 듯 하다.