728x90
반응형

Java로 Snail Queue 구현하기: 큐의 변형된 활용법

  • Java 언어로 SnailQueue라는 큐를 구현할 수 있습니다.
  • 일반적인 큐와 달리 "Snail Queue"는 데이터를 삽입할 때는 큐의 맨 뒤에 추가하지만,
  • 특정 조건에서 중간 위치의 데이터를 제거하거나 순서에 변화를 줄 수 있습니다.
  • 이를 통해 기존 큐의 기능을 응용한 다양한 동작을 구현할 수 있습니다.
  • 다음은 SnailQueue의 기본적인 예제 코드입니다.
import java.util.LinkedList;
import java.util.Queue;

public class SnailQueue<T> {
    private Queue<T> queue;

    public SnailQueue() {
        queue = new LinkedList<>();
    }

    // 큐에 데이터 추가
    public void enqueue(T data) {
        queue.add(data);
    }

    // 큐에서 맨 앞의 데이터 제거
    public T dequeue() {
        return queue.poll();
    }

    // 특정 조건에서 데이터 제거 예시 (중간 위치의 데이터를 제거)
    public boolean removeIfMiddle() {
        if (queue.size() > 2) {
            // 큐를 리스트로 변환하여 중간 요소 제거
            LinkedList<T> tempList = new LinkedList<>(queue);
            tempList.remove(queue.size() / 2); // 중간 요소 제거
            queue = new LinkedList<>(tempList); // 큐 업데이트
            return true;
        }
        return false;
    }

    // 큐에 있는 모든 요소 출력
    public void printQueue() {
        System.out.println(queue);
    }

    public static void main(String[] args) {
        SnailQueue<Integer> snailQueue = new SnailQueue<>();

        snailQueue.enqueue(1);
        snailQueue.enqueue(2);
        snailQueue.enqueue(3);
        snailQueue.enqueue(4);
        snailQueue.enqueue(5);

        snailQueue.printQueue(); // [1, 2, 3, 4, 5]

        snailQueue.removeIfMiddle();
        snailQueue.printQueue(); // 중간 요소 제거 후 출력 예: [1, 2, 4, 5]

        snailQueue.dequeue();
        snailQueue.printQueue(); // [2, 4, 5]
    }
}

위 코드에서는 removeIfMiddle 메서드를 통해 큐의 중간 요소를 제거하는 방법을 예시로 보여주고 있습니다. 필요에 따라 큐의 조건과 동작을 자유롭게 수정하여 자신만의 "Snail Queue" 동작을 정의할 수 있습니다.

728x90
반응형

+ Recent posts