: 모두 배열에서 발전된 형태의 구조
<큐 연산 과정>
🪄잠깐!
- 우선순위 큐(Priority Queue)
- 우선순위 큐도 있다.
우선순위 큐(Priority Queue)는 값이 들어간 순서와 상관없이 우선순위가 높은 데이터가 먼저 나오는 자료구조이다.- 큐 설정에 따라 front에 항상 최댓값 또는 최솟값이 위치한다.
=> 즉, 트리구조를 예를들어 제일 상단의 노드가 max가 오도록 설정한 것 뿐이지 하단의 노드들이 정렬이 되는 것은 아님- 우선순위 큐는 일반적으로 힙(heap)을 이용해 구현하는데, 힙은 트리 종류 중 하나이므로 추후에 다룰 예정!(링크 첨부하도록 하겠음)
| 큐 인터페이스를 구현하는 주요 클래스(구현체)
- LinkedList
- 이중연결 리스트로 구현된 클래스로, 큐의 동작을 지원하면서도 리스트의 다른 기능들도 제공
- ArrayDeque
- 가변 크기 배열을 사용하여 큐를 구현한 클래스, 배열을 기반으로 동작하기 때문에 큐의 끝에 요소를 추가하거나 삭제 하는데 있어 상대적으로 빠른 속도를 보여줌.
(스택으로도 사용 가능)- PriorityQueue
- 우선순위 큐를 구현한 클래스
'Queue' 인터페이스를 구현하면서 요소를 우선순위순으로 관리
따라서, 가장 높은 우선순위의 요소가 먼저 나오게 된다.
<덱 자료구조>
| 덱 인터페이스를 구현하는 주요 클래스(구현체)
- LinkedList
- 이중연결 리스트로 구현된 클래스
- 요소의 삽입, 삭제에 뛰어난 유연성 제공
- 중간 삽입 및 삭제에 강점을 가짐
- 그러나, ArrayDeque보다는 성능면에서 약간 떨어질 수 있음
- ArrayDeque
- 가변 크기 배열을 사용하여 큐를 구현한 클래스
- 큐의 처음과 끝 모두에서 빠른 삽입과 삭제를 지원
(빠른 성능)
- addFirst(e), offerFirst(e): Deque의 맨 앞에 요소를 추가
- addLast(e), offerLast(e), add(e), offer(e) : Deque의 맨 뒤에 요소를 추가
- getFirst(), peekFirst(), peek() : Deque의 맨 앞에 있는 요소를 반환합니다.
- getLast(), peekLast(): Deque의 맨 뒤에 있는 요소를 반환합니다.
- removeFirst(), pollFirst(), poll(), remove() : Deque의 맨 앞에서 요소를 제거하고 반환합니다.
- removeLast(), pollLast(): Deque의 맨 뒤에서 요소를 제거하고 반환합니다.
| 내가 푼 문제
백준 : 10828(스택) / 10845(큐) / 10866(덱) -> 링크 첨부 예정
출처 :
Do it 알고리즘 코딩테스트 자바편
자료구조 덱-Benjamin.log
Chat gpt