본문 바로가기

카테고리 없음

BAEKJOON(백준) Deque - 10866번 JAVA CODE

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.util.Deque;
import java.util.LinkedList;
 
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> q = new LinkedList<>();
		
		int N = Integer.parseInt(br.readLine());
		
		StringTokenizer command;
		
		while(N-- > 0) {
			command = new StringTokenizer(br.readLine(), " ");
			
			switch(command.nextToken()) {	
			
			case "push_front":
				q.offerFirst(Integer.parseInt(command.nextToken()));	
				break;
				
			case "push_back":
				q.offerLast(Integer.parseInt(command.nextToken()));	
				break;
			
			case "pop_front" :
				Integer item1 = q.pollFirst();	
				if(item1 == null) {
					sb.append(-1).append('\n');
				}
				else {
					sb.append(item1).append('\n');
				}
				break;
				
			case "pop_back" :
				Integer item2 = q.pollLast();	
				if(item2 == null) {
					sb.append(-1).append('\n');
				}
				else {
					sb.append(item2).append('\n');
				}
				break;
				
			case "size":	
				sb.append(q.size()).append('\n');
				break;
				
			case "empty":
				if(q.isEmpty()) {
					sb.append(1).append('\n');
				}
				else {
					sb.append(0).append('\n');
				}
				break;
				
			case "front":
				Integer ite = q.peek();
				if(ite == null) {
					sb.append(-1).append('\n');
				}
				else {
					sb.append(ite).append('\n');
				}
				break;
				
			case "back":
				Integer it = q.peekLast();	 
				if(it == null) {
					sb.append(-1).append('\n');
				}
				else {
					sb.append(it).append('\n');
				}
				break;
			}
		}
		System.out.println(sb);
	}
}

 

Deque Method

addFirst()

: 덱의 앞에 element삽입. 용량을 초과하게 되면 예외 발생

addLast()

: 덱의 뒤에 element삽입. 용량 초과하게 되면 예외 발생

add()

: addLast()와 같음

offerLast()

: 덱의 마지막에 element삽입. 성공적으로 삽입된 경우 true 반환

removeFirst()

: 덱의 앞에서 element를 하나 뽑아서 제거한 후 return

덱이 empty면, 예외 발생

pollFirst()

: 덱의 앞에서 element를 하나 뽑아서 제거한 후 return 

덱이 empty면 null return

removeLast()

: 덱의 뒤에서 element를 하나 뽑아서 제거한 후 reuturn

덱이 empty면, 예외 발생

pollLast()

: 덱의 뒤에서 elment를 하나 뽑아서 제거한 후 return

댁이 empty면, null return

remove()

: removeFirst()와 동일 

poll()

: pollFirst()와 동일

getFirst()

peekFirst()

 

getLast()

 

peekLast()

 

peek()