(00) :: Introduciton
대학교 학부 시절때 공부했던 이론 내용들을 리마인드 하기 위해서 작성된 게시글입니다.
정확하지 않은 내용이 포함되어 있는 경우, 댓글로 남겨주시면 수정할 수 있도록 하겠습니다.
이 게시글은 한 번에 완성되는 게시글이 아니며 내용을 지속적으로 추가할 예정입니다.
(01) :: Define a Concept
큐 자료구조는 원소를 넣고 반대쪽 끝에서 원소를 뺄 수 있는 자료구조로 먼저 들어간 원소가 제일 먼저 나오는 선입선출 방식으로 동작합니다. 다른 말로는 FIFO(First In, First Out) 자료구조라고 부르기도 합니다.
예시) 공항수속
---------------------------------
| 3(F) | 4 | 7 | 2(R) |
---------------------------------
F = Front
R = Rear
(02) :: Property
큐도 스택과 마찬가지로 특정 위치에서만 원소를 삭제하거나 뺄 수 있게 제한을 둔 덕분에 다양한 특성을 갖고 있습니다.
#1 원소를 추가나 제거하는 경우 O(1) 비용 밖에 들지 않는다.
#2 제일 앞(Front), 뒤(Rear)의 원소 확인하는 경우도 O(1) 비용 밖에 들지 않는다.
#3 제일 앞/뒤가 아닌 나머지 원소들의 확인이나 변경이 원칙적으로 불가능하다.
#1과 #2의 경우 스택과 거의 유사하기 때문에 생략합니다.
다른 점은 스택은 맨 위에 있는 포지션(Top)을 다루지만, 큐는 맨 앞, 맨 뒤 포지션(Front, Rear)을 다룹니다.
Front, Rear 명칭을 Head, Tail로 부르기도 합니다.
#3도 스택과 마찬가지로 배열을 활용하면 다른 위치의 원소 확인이 가능하도록 만들 수는 있으나 실제로 많이 사용되지는 않습니다.
(03) :: Queue, How it works?
큐의 특성 부분에서 다룬 큐의 2가지 기능에 대해서 알아봅시다.
#1 원소를 추가나 제거하는 경우 = O(1)
#2 제일 앞(Front), 제일 뒤(Rear)의 원소 확인하는 경우 = O(1)
#1의 경우 값을 추가하고 Front와 Rear의 위치를 변경해 주면 됩니다.
1. 크기 4의 큐를 만든다.
---------------------------------
| X | X | X | X |
---------------------------------
2. 3을 추가한다.
---------------------------------
| 3(F,R)| X | X | X |
---------------------------------
F = Front
R = Rear
3. 2를 추가한다.
-------------------------------
| 3(F) | 2(R) | X | X |
-------------------------------
F = Front
R = Rear
#2의 경우 큐의 Front, Rear의 위치를 통해 값에 접근해서 조회하면 됩니다.
4. Front에 접근해 데이터를 출력합니다. (Rear도 동일합니다.)
-------------------------------
| 3(F) | 2(R) | X | X |
-------------------------------
F = Front
R = Rear
-- 출력 결과 --
------------------
| 터미널 출력: 3 |
------------------
(04) :: Queue, How to use in Java?
- 자바 API 활용한 사용 방법
- 실제 구현
(FF) :: Reference
참고자료는 다음과 같습니다.
# -- Thanks to --
#1 blog.encrypted.gg
'CS > Algorithm & Data Structure' 카테고리의 다른 글
[알고리즘] 조합과 순열, 그리고 점화식에 대해서 (1) | 2023.12.10 |
---|---|
[자료구조] 엉덩이 아니고요. Heap입니다. 힙에 대해서 (0) | 2023.12.05 |
[자료구조] 쌓아올리는 자료구조 스택에 대해서 (0) | 2023.12.03 |
[자료구조] 근본 자료구조인 연결리스트에 대해서 (0) | 2023.12.03 |
[자료구조] 누구나 아는 배열에 대해서 (0) | 2023.12.03 |