티스토리 뷰

Algorithm/Baekjoon

[백준] 10845번 큐(JAVA)

다교이 2022. 7. 28. 23:35

문제

- 정수를 저장하는 큐을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램 작성

- push X : 정수 X를 큐에 넣기

- pop : 스택에서 가장 앞에 있는 정수를 빼고, 그 수 출력. 만약 큐에 들어있는 정수가 없는 경우 -1 출력

- size : 큐에 들어있는 정수의 개수 출력

- empty : 큐가 비어있으면 1, 아니면 0 출력

- front : 큐의 가장 앞에 있는 정수 출력. 만약 큐에 들어있는 정수가 없는 경우 -1 출력

- back : 큐의 가장 뒤에 있는 정수 출력. 만약 큐에 들어있는 정수가 없는 경우 -1 출력

 

해결방법

이 문제를 해결할 때에는 자바 내의 ArrayDeque 클래스를 이용하여 문제를 해결하였다. push X (add(x)), pop (poll()), size(size()), empty(isEmpty()), front(peekFirst()), back(peekLast()) 메소드를 이용하여 문제를 해결하였다.

 

코드

import java.io.*;
import java.util.*;

class Main {

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int N = Integer.parseInt(br.readLine());
        ArrayDeque<Integer> queue = new ArrayDeque<>();		// 숫자 저장하는 queue

        for(int i = 0; i<N; i++){
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            String command = st.nextToken();
            // push 연산을 위해 add() 메소드 이용
            if(command.equals("push")) queue.add(Integer.parseInt(st.nextToken()));
            // pop 연산을 위해 poll() 메소드 이용
            else if(command.equals("pop")){
                if (queue.isEmpty()) sb.append(-1).append("\n");
                else sb.append(queue.poll()).append("\n");
            }
            // size 연산을 위해 size() 메소드 이용
            else if (command.equals("size")) sb.append(queue.size()).append("\n");
            // empty 연산을 위해 isEmpty() 메소드 이용
            else if (command.equals("empty")){
                if (queue.isEmpty()) sb.append(1).append("\n");
                else sb.append(0).append("\n");
            }
            // front 연산을 위해 peekFirst() 메소드 이용
            else if(command.equals("front")){
                if (queue.isEmpty()) sb.append(-1).append("\n");
                else sb.append(queue.peekFirst()).append("\n");
            }
            // back 연산을 위해 peekLast() 메소드 이용
            else if(command.equals("back")){
                if (queue.isEmpty()) sb.append(-1).append("\n");
                else sb.append(queue.peekLast()).append("\n");
            }
        }

        System.out.println(sb);


        br.close();
    }
}

'Algorithm > Baekjoon' 카테고리의 다른 글

[백준] 1497번 기타콘서트(JAVA)  (0) 2022.12.19
[백준] 10866번 덱(JAVA)  (0) 2022.07.28
[백준] 10828번 스택(JAVA)  (1) 2022.07.28
[백준] 10816번 숫자 카드 2(JAVA)  (0) 2022.07.28
[백준] 10814번 나이순 정렬(JAVA)  (0) 2022.07.25
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday