백준

백준 10845 - java

으엉어엉 2024. 8. 15. 18:31
728x90

문제

풀이

처음에는 Que로 제목과 같이 Que를 사용하여 문제를 풀었다. 하지만 LinkedList로는 런타임 오류가 떳고 그에 따라 Deque를 사용하여 ArrayDeque를 사용하여 문제를 풀었다. 첫 번째 코드는 Que로 풀었던 코드이고 두 번째 코드는 Deque를 사용하여 풀었던 풀이이다.

 

첫번째 Que를 사용한 실패한 풀이: 

import java.util.*;

public class Que1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Queue<Integer> queue = new LinkedList<>();

        int n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            String command = sc.next();

            switch (command) {
                case "push":
                    int x = sc.nextInt();
                    queue.add(x);
                    break;

                case "pop":
                    if (queue.isEmpty()) {
                        System.out.println(-1);
                    } else {
                        System.out.println(queue.poll());
                    }
                    break;

                case "size":
                    System.out.println(queue.size());
                    break;

                case "empty":
                    if (queue.isEmpty()) {
                        System.out.println(1);
                    } else {
                        System.out.println(0);
                    }
                    break;

                case "front":
                    if (queue.isEmpty()) {
                        System.out.println(-1);
                    } else {
                        System.out.println(queue.peek());
                    }
                    break;

                case "back":
                    if (queue.isEmpty()) {
                        System.out.println(-1);
                    } else {
                        System.out.println(((LinkedList<Integer>) queue).getLast());
                    }
                    break;
            }
        }
    }
}

두 번째 Deque를 사용한 성한 풀이: 

import java.util.*;

public class Que1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Deque<Integer> queue = new ArrayDeque<>();

        int n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            String command = sc.next();

            switch (command) {
                case "push":
                    int x = sc.nextInt();
                    queue.add(x);  // 또는 queue.addLast(x);
                    break;

                case "pop":
                    if (queue.isEmpty()) {
                        System.out.println(-1);
                    } else {
                        System.out.println(queue.poll());
                    }
                    break;

                case "size":
                    System.out.println(queue.size());
                    break;

                case "empty":
                    if (queue.isEmpty()) {
                        System.out.println(1);
                    } else {
                        System.out.println(0);
                    }
                    break;

                case "front":
                    if (queue.isEmpty()) {
                        System.out.println(-1);
                    } else {
                        System.out.println(queue.peek());
                    }
                    break;

                case "back":
                    if (queue.isEmpty()) {
                        System.out.println(-1);
                    } else {
                        System.out.println(queue.peekLast());
                    }
                    break;
            }
        }
        sc.close();
    }
}
728x90

'백준' 카테고리의 다른 글

백준 10866 - Java  (0) 2024.08.24
백준 1158 - Java  (0) 2024.08.24
백준 1406 - java  (0) 2024.08.13
백준 1874 - java  (0) 2024.08.13
백준 9012 - java  (0) 2024.08.13