본문 바로가기
알고리즘/백준

[백준 10866] 덱 - 자바

by binghe819 2020. 4. 25.

https://www.acmicpc.net/problem/10866

 

10866번: 덱

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.

www.acmicpc.net


1. 풀이

자바의 ArrayDequeue를 이용하여 풀이를 해보았다.

 

이미 다 구현된 덱이 있어서 쉽게 풀이가 가능하다.

 

다음엔 덱을 직접 구현해 풀이를 해 볼 생각이다. 지금은 뭔가 시간이 아깝(?)... 

 


2. 코드

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int num = sc.nextInt();
		
        // 덱
		ArrayDeque<Integer> deque = new ArrayDeque<Integer>();
		
		while(num-- > 0) {
			String input = sc.next();
			
			if(input.equals("push_front")) {
				deque.offerFirst(sc.nextInt());
			} else if(input.equals("push_back")) {
				deque.offerLast(sc.nextInt());
			} else if(input.equals("pop_front")) {
				if(deque.isEmpty())
					System.out.println(-1);
				else
					System.out.println(deque.pollFirst());
			} else if(input.equals("pop_back")) {
				if(deque.isEmpty())
					System.out.println(-1);
				else
					System.out.println(deque.pollLast());
			} else if(input.equals("size")) {
				System.out.println(deque.size());
			} else if(input.equals("empty")) {
				if(deque.isEmpty())
					System.out.println(1);
				else
					System.out.println(0);
			} else if(input.equals("front")) {
				if(deque.isEmpty())
					System.out.println(-1);
				else
					System.out.println(deque.peekFirst());
			} else if(input.equals("back")) {
				if(deque.isEmpty())
					System.out.println(-1);
				else
					System.out.println(deque.peekLast());
			}
		}
		
		sc.close();
		return;
	}
}

댓글