Java/코딩테스트

[백준] 10845번: 큐 (JAVA)

다아빈 2025. 4. 24. 21:04
728x90
반응형

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

문제 접근

이 문제는 큐를 구현하는 문제였는데, 저는 자바에서 제공하는 Queue 인터페이스 및 구현체를 사용하였습니다.

우선 큐란 스택과 반대로 가장 먼저 들어온 데이터가 가장 먼저 나가는 선입선출(First In Fisrt Out) 구조입니다. 큐의 활용 예시로는 최근 사용문서기록, 인쇄작업 대기 목록 등이 있습니다.

 

자바에서는 큐의 가장 뒤에 있는 요소를 출력하는 함수가 없기 때문에 가장 마지막의 값을 저장하는 변수 back을 만들었습니다.

큐의 경우 맨 뒤에 값이 추가되므로, push 명령어가 들어왔을 때 back에 값을 저장하였습니다.

전체 코드

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(br.readLine());

        Queue queue = new LinkedList();
        int back = 0;

        for(int i = 0; i < n; i++) {
            String input = br.readLine();
            String[] str = input.split(" ");

            switch (str[0]) {
                case "push" :
                    back = Integer.parseInt(str[1]);
                    queue.offer(Integer.parseInt(str[1]));
                    break;

                case "pop" :
                    if(queue.isEmpty()) bw.write("-1\n");
                    else bw.write(queue.poll() + "\n");
                    break;

                case "size" :
                    bw.write(queue.size() + "\n");
                    break;

                case "empty" :
                    if(queue.isEmpty()) bw.write("1\n");
                    else bw.write("0\n");
                    break;

                case "front" :
                    if(queue.isEmpty()) bw.write("-1\n");
                    else bw.write(queue.peek() + "\n");
                    break;

                case "back" :
                    if(queue.isEmpty()) bw.write("-1\n");
                    else bw.write(back + "\n");
                    break;
            }
        }

        bw.close();
    }
}

큐 기본 연산 용어

  • enqueue: 큐에 데이터 추가 (맨 뒤에 추가)
  • dequeue: 큐에서 데이터 제거 (맨 앞의 값 제거)
  • front/head: 맨 앞의 값을 부르는 용어

자바에서는 추가할 때는 offer()/add()를 사용하며, 삭제할 때는 poll()/remove()를 사용합니다.

또한 맨 앞의 값을 가져올 때는 peek()이라는 함수를 사용합니다.

728x90
반응형