ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java]덱(Deque)
    Algorithm/자료구조 for Algorithm 2021. 2. 18. 22:08

    *덱(Deque)

    -> 덱이란 큐와 스택의 특성을 동시에 가질 수 있는 자료구조이다.

    -> 두 가지 특성을 동시에 활용할 수 있기 때문에 더 다양하게 활용될 수 있다.

    덱 자료구조

    *Java의 덱

    -> 덱 자료 구조는 기본적으로 Queue의 구조를 채용하고 있다. 따라서 일반 큐의 연산인 poll() 메서드와 offer() 메서드는 동일하게 사용할 수 있다.

    -> 덱 자료 구조는 양 방향을 모두 head로 볼 수 있다. 따라서, 배열의 관점에서 인덱스가 0인 부분의 head는 일반 큐 메서드 이름에 Fisrt를 추가하여 구분하고, 마지막 인덱스 부분의 head는 Last를 추가하여 구분한다.

    -> peek() 메서드도 마찬가지이다. 좌측 부분의 head를 확인하고 싶다면 peek() 메서드 혹은 peekFirst() 메서드를 사용하면 되고, 우측 부분의 head를 확인하고 싶다면 peekLast() 메서드를 사용하면 된다.

    (참고 : docs.oracle.com/javase/7/docs/api/)

     

    Java Platform SE 7

     

    docs.oracle.com

    import java.util.ArrayDeque;
    import java.util.Deque;
    
    /**
     * 조합 : n 개 중에서 r 개 선택
     */
    public class test {
        public static void main(String[] args) {
    		Deque<Integer> dq = new ArrayDeque<Integer>();
    		
    		// 일반 큐의 구조와 마찬가지로 1, 2, 3 투입.
    		dq.offer(1);
    		dq.offer(2);
    		dq.offer(3);
    		// 큐의 좌측에 100 투입.
    		dq.offerFirst(100);
    		// 큐의 우측에 200 투입(그냥 offer 연산은 사용해도 된다).
    		dq.offerLast(200);
    		// 큐의 우측 원소를 추출
    		dq.pollLast();
    		
    		// 큐의 우측 원소를 확인
    		System.out.println(dq.peekLast());
    		// 큐의 전체 숫자를 차레로 확인
    		for(Integer num : dq) {
    			System.out.print(num + " ");
    		}
    	}
    }

     

    댓글

Designed by Tistory.