본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 - 28279번: 덱 2 [Java]

문제: https://www.acmicpc.net/problem/28279

 

28279번: 덱 2

첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다.

www.acmicpc.net

1. 코드

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		StringBuilder sb = new StringBuilder();
		Deque <Integer> d = new ArrayDeque<>();
		while(N-- > 0) {
			int cmd = sc.nextInt();
			switch(cmd) {
			case 1: d.addFirst(sc.nextInt()); break;
			case 2: d.addLast(sc.nextInt()); break;
			case 3: 
				if(d.isEmpty())
					sb.append(-1).append('\n');
				else
					sb.append(d.removeFirst()).append('\n');
				break;
			case 4:
				if(d.isEmpty())
					sb.append(-1).append('\n');
				else
					sb.append(d.removeLast()).append('\n');
				break;
			case 5: sb.append(d.size()).append('\n'); break;
			case 6: 
				if(d.isEmpty())
					sb.append(1).append('\n');
				else
					sb.append(0).append('\n');
				break;
			case 7:
				if(d.isEmpty())
					sb.append(-1).append('\n');
				else
					sb.append(d.peekFirst()).append('\n');
				break;
			case 8:
				if(d.isEmpty())
					sb.append(-1).append('\n');
				else
					sb.append(d.peekLast()).append('\n');
			}
		}
		System.out.println(sb.toString());
	}
}

2. 설명

Deque를 적절히 활용하여 출력 내용은 StringBuilder에 저장 후 한번에 출력합니다.