기타

Deque

99duuk 2025. 1. 16. 12:50

자바에서는 Deque 인터페이스를 통해 양쪽 끝에서 삽입과 삭제를 지원하는 자료구조를 제공한다.

일반적으로 ArrayDeque 또는 LinkedList 클래스가 사용된다.

 


주요 메서드

  • 삽입
    • addFirst(E e): 덱의 앞쪽에 요소를 추가
    • addLast(E e): 덱의 뒤쪽에 요소를 추가
    • offerFirst(E e): 앞쪽에 요소를 추가하며 실패 시 false 반환
    • offerLast(E e): 뒤쪽에 요소를 추가하며 실패 시 false 반환
  • 삭제
    • removeFirst(): 앞쪽에서 요소를 제거
    • removeLast(): 뒤쪽에서 요소를 제거
    • pollFirst(): 앞쪽에서 제거하며 비어 있으면 null 반환
    • pollLast(): 뒤쪽에서 제거하며 비어 있으면 null 반환
  • 조회
    • getFirst(): 앞쪽 요소를 반환
    • getLast(): 뒤쪽 요소를 반환
    • peekFirst(): 앞쪽 요소를 반환하며 비어 있으면 null
    • peekLast(): 뒤쪽 요소를 반환하며 비어 있으면 null

 


import java.util.ArrayDeque;
import java.util.Deque;

public class DequeExample {
    public static void main(String[] args) {
        Deque<String> deque = new ArrayDeque<>();
        
        // 삽입
        deque.addFirst("A");
        deque.addLast("B");
        deque.offerFirst("C");
        deque.offerLast("D");
        
        // 조회
        System.out.println("앞쪽 요소: " + deque.peekFirst()); // C
        System.out.println("뒤쪽 요소: " + deque.peekLast());  // D
        
        // 삭제
        deque.removeFirst(); // C 제거
        deque.pollLast();    // D 제거
        
        System.out.println("현재 덱: " + deque); // [A, B]
    }
}

 

 


 

JavaScript에서의 Deque

JavaScript에는 기본적으로 Deque 자료구조를 제공하지 않지만, 배열(Array)을 사용하여 구현할 수 있다.

Array는 기본적으로 양쪽 끝에서의 삽입과 삭제를 지원한다.

주요 메서드

  • 삽입
    • push(): 뒤쪽에 요소를 추가
    • unshift(): 앞쪽에 요소를 추가
  • 삭제
    • pop(): 뒤쪽 요소를 제거
    • shift(): 앞쪽 요소를 제거

 

class Deque {
    constructor() {
        this.items = [];
    }

    // 삽입
    addFirst(item) {
        this.items.unshift(item);
    }

    addLast(item) {
        this.items.push(item);
    }

    // 삭제
    removeFirst() {
        return this.items.shift();
    }

    removeLast() {
        return this.items.pop();
    }

    // 조회
    peekFirst() {
        return this.items[0];
    }

    peekLast() {
        return this.items[this.items.length - 1];
    }

    // 덱 상태 출력
    toString() {
        return this.items.join(", ");
    }
}

// 사용 예시
const deque = new Deque();

deque.addFirst("A");
deque.addLast("B");
console.log(deque.toString()); // A, B

deque.addFirst("C");
console.log(deque.toString()); // C, A, B

deque.removeLast();
console.log(deque.toString()); // C, A
console.log(deque.peekFirst()); // C
console.log(deque.peekLast());  // A