새소식

250x250
알고리즘 분류/자료구조

[자료구조]Deque

  • -
728x90

이번 포스트에서는 Deque 자료구조에 대해서 살펴보자.

 

Deque

 

기본 특성

흔히 Deck으로 알려진 Deque는 Double ended Queue의 약자로 Queue인데 양쪽이 모두 뚤린 구조이다. 따라서 앞/뒤로 자료를 넣고 뺄 수 있는 기능을 갖는다.

이에따라 기본적으로 제공되는 메서드들이 방향성을 갖는다.(물론 그렇지 않은 표현도 다 제공한다. 예를 들어 offer와 offerLast는 동일하다.)

  First Element(Head) Last Element(Tail)
문제 발생 시 예외 발생 특정 값 반환 예외 발생 특정 값 반환
insert addFirst offerFirst addLast offerLast
remove removeFirst pollFirst removeLast pollLast
examine getFirst peekFirst getLast peekLast

 

 

구현체

Deque는 Queue를 상속받은 interface로 구현체로는 ArrayDeque와 LinkedList를 제공한다.

따라서 기본적으로는 Queue의 기능을 가지고 있으며 앞/뒤로 데이터를 추가/삭제할 수 있기 때문에 Stack으로도 사용이 가능하다. 특히 ArrayDeque는 Stack, Queue 보다 성능이 뛰어나다고 알려져있기 때문에 사용을 권장한다.

 

 

Stack, Queue의 대체 메서드

Deque는 Stack과 Queue의 메서드들을 다 가지고 있다. 그런데 가끔 그 메서드들이 헷갈릴 수 있어서 방향성을 갖춘 메서드들을 함께 제공하고 있다.

Queue Method Stack Method
offer(e) offerLast(e) push(e) offerFirst(e)
poll() pollFirst() pop() pollFirst()
peek() peekFirst() peek() peekFirst()

 

기본적인 동작은 위와 같다. Deque 사용 시 여러 메서드가 팝업되면 헷갈리니까 Queue 는 offer, poll, peek, Stack은 push, pop, peek로 확실히 외워두자. 큐오폴, 스푸팝.

 

또는 Stack, Queue의 특성과 방향성을 잘 생각하면서 offerLast, offerFirst등을 사용하는 것도 괜찮다.

 

 

활용

 

동작 확인해보기

다음의 코드를 디버거를 통해서 돌려보면서 Deque의 동작을 살펴보자.

 

 

관련 문제

https://www.acmicpc.net/problem/10866

 

10866번: 덱

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

https://www.acmicpc.net/problem/1021

 

1021번: 회전하는 큐

첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가

www.acmicpc.net

 

https://www.acmicpc.net/problem/5430

 

5430번: AC

각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.

www.acmicpc.net

 

728x90

'알고리즘 분류 > 자료구조' 카테고리의 다른 글

[BJ]11866, 1158, 1168, 11025 요세푸스 문제 n  (0) 2023.08.16
[BJ]1202. 보석도둑  (0) 2023.01.15
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.