Competition/Baekjoon

[백준] 10845번 자바 큐 기초

bisi 2020. 3. 12. 07:53
문제 출처 

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

 

10845번: 큐

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

www.acmicpc.net

 

 

 

접근 방식 및 풀이

- 큐를 사용하는 기초 문제이다. 

- 큐를 선언하고 명령어에 따라 코딩하면 된다. 

- Queue로 진행하다가 peekLast, peekFirst 메소드 사용을 위해 Deque로 바꿨다.

 

 

 

 

소스 코드 
import java.util.Deque;
import java.util.LinkedList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        Deque<Integer> queue = new LinkedList<>();
        for (int i = 0; i <n ; i++) {
            String str = sc.next();

            if(str.equals("push")){
                queue.addLast(sc.nextInt());

            }else if(str.equals("pop")){
                if(queue.size()<1){
                    System.out.println(-1);
                }else {
                    int a = queue.pollFirst();
                    System.out.println(a);
                }
            }else if(str.equals("size")){
                System.out.println(queue.size());
            }else if(str.equals("empty")){
                if (queue.isEmpty()){
                    System.out.println(1);
                }else{
                    System.out.println(0);
                }
            }else if(str.equals("front")){
                if(queue.size()<1){
                    System.out.println(-1);
                }else {
                    System.out.println(queue.peekFirst());
                }
            }else if(str.equals("back")){
                if(queue.size()<1){
                    System.out.println(-1);
                }else {
                    System.out.println(queue.peekLast());
                }
            }
        }



    }
}

 

 

 

 

결과