Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- airflow
- WEB
- 관계형데이터베이스
- 자료구조
- 기술면접
- 웹크롤링
- 알고리즘
- 데이터웨어하우스
- 데브코스
- SQL
- 클라우드
- DataWarehouse
- 데이터엔지니어링
- Amazon
- 웹스크래핑
- 개발
- 운영체제
- 데이터베이스
- 개념정리
- 취준
- 에어플로우
- Service
- 데이터엔지니어
- 웹자동화
- CS
- 프로그래머스
- Django
- 부트캠프
- 파이썬
- AWS
Archives
- Today
- Total
사진과 음악을 좋아하는 개발자 지망생의 블로그
큐 level 2 (환형 큐, Circular Queue) 본문
반응형
1) 환형 큐(Circular Queue)
- 컴퓨터 시스템 내에서 이용할 수 있는 자원이 한정적 → 큐의 길이를 한정하여 사용
- 배열로 큐 구현 시 길이에 비례한 시간복잡도를 가진 연산이 있음
- 위 두 문제 포함 큐 구현시 발생하는 문제들을 보완하기 위해 환형 큐(Circular Queue)를 사용
- 환형 큐(Circular Queue) → 정해진 개수의 저장 공간을 돌려가며 이
- Fornt : dequeue가 이뤄지는 index / rear : enqueue가 발생 index * 초기 상태 : front == rear
2) 환형 큐 자료구조 구현
① 배열로 구현한 환형 큐
→ front와 rear를 적절히 계산하여 배열을 환형으로 재활용
② 배열로 구현한 환형 큐 연산
class CircularQueue:
def __init__(self, n): # 빈 큐를 초기화
self.maxCount = n # 인자로 주어진 최대 큐 길이 설정
self.data = [None] * n
self.count = 0
self.front = -1
self.rear = -1
def size(self):
return self.count
def isEmpty(self): # 큐가 비어있는가?
return self.count == 0
def isFull(self): # 큐가 꽉 차있는가?
return self.count == self.maxCount
def enqueue(self, x): # 큐에 데이터 원소 추가
if self.isFull():
# IndexError('Queue full') exception으로 처리
raise IndexError('Queue full')
self.rear = (self.rear + 1) % self.maxCount
self.data[self.rear] = x
self.count += 1
def dequeue(self): # 큐에서 데이터 원소 뽑아내기
if self.isEmpty():
raise IndexError('Queue empty')
self.front = (self.front + 1) % self.maxCount
x = self.data[self.front]
self.count -= 1
return x
def peek(self): # 큐의 맨 앞 원소 들여다 보기
if self.isEmpty():
raise IndexError('Queue empty')
return self.data[(self.front + 1) % self.maxCount]
반응형
'CS > 자료구조 & 알고리즘' 카테고리의 다른 글
트리 level 1 (트리 기본, just Tree...) (0) | 2023.04.13 |
---|---|
큐 level 3 (우선순위 큐, Priority Queue) (0) | 2023.04.12 |
큐(Queue) level 1 (0) | 2023.04.12 |
스택(Stack) (0) | 2023.04.11 |
연결리스트 level 3 (Doubly Linked List) (0) | 2023.04.11 |