큐 (Queue)

ilkwon bae·2023년 4월 26일
0

Queue는 대기열에 넣기와 대기열에서 빼기라는 두 가지 작업이 허용되는 요소 모음을 나타내는 선형 데이터 구조입니다. enqueue 작업은 요소를 대기열의 뒤에 추가하는 반면 dequeue 작업은 대기열의 앞에 요소를 제거합니다. 대기열은 FIFO(First In First Out) 원칙을 따릅니다. 즉, 대기열에 추가된 첫 번째 요소가 가장 먼저 제거됩니다.

대기열의 일상 생활의 한 예는 식료품점 계산대의 줄입니다. 사람들은 뒤쪽에서 줄(enqueue)에 합류하고 앞쪽에서 줄(dequeue)을 떠납니다. 대기열의 FIFO 원칙에 따라 첫 번째 줄에 있는 사람이 가장 먼저 체크아웃됩니다.
마찬가지로 새로운 사람이 식료품점에 도착하면 enqueue 작업을 사용하여 새 요소가 대기열의 뒤에 추가되는 방식과 마찬가지로 줄의 맨 뒤에 합류합니다. 줄 맨 앞에 있는 사람이 계산을 마치면 줄을 떠나고 다음 줄에 있는 사람이 앞으로 올라갑니다.
전반적으로 식료품점의 대기열은 일상 생활에서 대기열 데이터 구조의 간단하고 직관적인 예입니다.


다음은 Java에서 큐 데이터 구조를 사용하는 방법의 예입니다.

import java.util.LinkedList;
import java.util.Queue;

public class QueueExample {
    public static void main(String[] args) {
        Queue<Integer> queue = new LinkedList<Integer>();
        
        queue.add(10); // enqueue 10
        queue.add(20); // enqueue 20
        queue.add(30); // enqueue 30
        
        System.out.println(queue); // [10, 20, 30]
        
        int element = queue.remove(); // dequeue 10
        System.out.println("Removed element: " + element); // Removed element: 10
        
        System.out.println(queue); // [20, 30]
        
        int head = queue.peek(); // get the front element (20)
        System.out.println("Front element: " + head); // Front element: 20
        
        int size = queue.size(); // get the size of the queue (2)
        System.out.println("Queue size: " + size); // Queue size: 2
    }
}

이 코드는 LinkedList 클래스를 사용하여 정수 대기열을 만듭니다. add() 메소드는 큐의 뒤에 요소를 추가하고 remove() 메소드는 큐의 앞에서 요소를 제거합니다. peek() 메서드는 큐의 앞 요소를 제거하지 않고 반환하고 size() 메서드는 큐의 요소 수를 반환합니다.

이 예에서는 요소 10, 20 및 30을 대기열에 추가하고 대기열을 인쇄합니다. 그런 다음 첫 번째 요소(10)를 대기열에서 빼고 제거된 요소와 업데이트된 대기열을 인쇄합니다. 마지막으로 앞 요소(20)와 대기열 크기(2)를 가져와서 인쇄합니다. 이 예제는 Java에서 대기열 데이터 구조의 기본 작업을 보여줍니다.

profile
좋은 개발자가 되고 싶은 그냥 개발자

0개의 댓글