728x90
이 포스팅은 <파이썬 자료구조와 알고리즘 for beginner>를 학습하면서 정리한 내용이다.
https://www.yes24.com/Product/Goods/97142842
파이썬 자료구조와 알고리즘 for Beginner - 예스24
파이썬으로 구현하며 다지는논리적 사고를 위한 기초 체력기본 자료구조와 알고리즘을 쉽게 풀어낸 입문서입니다. 기본 → 간단 구현 → 일반 구현 → 응용 순으로 체계적으로 학습할 수 있습
www.yes24.com
큐(Queue)
양쪽이 뚫린 파이프
큐의 특징
- 입구와 출구가 다르다.

원리
- enQueue : 삽입
- deQueue : 추출
- front : 첫번째 데이터 (front = -1 > 큐가 비었다는 뜻)
- rear : 마지막 데이터
01. 단순 코드 구현
## 함수
## 변수
SIZE = 5
queue = [None for _ in range(SIZE)]
front = rear = -1 # 큐 초기화
##메인
# 삽입(enQueue)
rear += 1
queue[rear] = '화사'
rear += 1
queue[rear] = '솔라'
rear += 1
queue[rear] = '문별'
print('출구 < --',queue,' < --- 입구')
# 추출 deQueue()
front += 1
data = queue[front]
queue[front]= None
print('식사손님 :', data)
front += 1
data = queue[front]
queue[front]= None
print('식사손님 :', data)
front += 1
data = queue[front]
queue[front]= None
print('식사손님 :', data)
print('출구<--', queue, '<--입구')
| 출구 < -- ['화사', '솔라', '문별', None, None] < --- 입구 식사손님 : 화사 식사손님 : 솔라 식사손님 : 문별 |
02. 큐 구조를 이용한 코드 구현
삽입의 원리(enQueue)
- rear를 하나 증가시키고 삽입
- 큐가 꽉찾는지 확인하는 함수 필요 isQueueFull()
추출의 원리(deQueue)
- front를 하나 증가시키고 추출
- 큐가 비어있는지 학인하는 함수 필요 isQueueEmpty()
- front == rear 이면, 큐가 비어있다는 뜻
- 위치 데이터 확인 필요 peek()
- 추출될 데이터를 큐에 그대로 두고 확인
## 함수
def isQueueFull() :
global SIZE, queue, front, rear
if(rear >= SIZE-1) :
return True
else :
return False
def enQueue(data) :
global SIZE, queue, front, rear
if (isQueueFull()) :
print('큐 꽉!')
return
rear += 1
queue[rear] = data
def isQueueEmpty() :
global SIZE, queue, front, rear
if (front == rear) :
return True
else :
return False
def deQueue() :
global SIZE, queue, front, rear
if (isQueueEmpty()) :
print('큐 텅~')
return
front += 1
data = queue[front]
queue[front] = None
return data
def peek() :
global SIZE, queue, front, rear
if (isQueueEmpty()) :
print('큐 텅~')
return
return queue[front+1]
## 변수
SIZE = 5
queue = [None for _ in range(SIZE)]
front = rear = -1
## 메인
enQueue('화사')
enQueue('솔라')
# enQueue('문별')
# enQueue('휘인')
# enQueue('선미')
# print('출구<--', queue, '<--입구')
# enQueue('재남')
print('출구<--', queue, '<--입구')
retData = deQueue()
print('손님 이리로 :', retData)
print('준비하세요 ==>', peek())
retData = deQueue()
print('손님 이리로 :', retData)
print('출구<--', queue, '<--입구')
retData = deQueue()
print('손님 이리로 :', retData)
| 출구<-- ['화사', '솔라', None, None, None] <--입구 손님 이리로 : 화사 준비하세요 ==> 솔라 손님 이리로 : 솔라 출구<-- [None, None, None, None, None] <--입구 큐 텅~ 손님 이리로 : None |
728x90
'Data Science & AI > Algorithm' 카테고리의 다른 글
| 신경망과 활성화함수 (0) | 2024.09.21 |
|---|---|
| 퍼셉트론과 논리회로 1 (1) | 2024.09.18 |
| [Algorithm] 자료구조와 알고리즘 - 3. 자료구조 - 스택(Stack) (0) | 2023.09.07 |
| [Algorithm] 자료구조와 알고리즘 - 1. 자료구조 - 선형 리스트 (0) | 2023.09.05 |
| 정렬 알고리즘 - 선택 정렬, 삽입 정렬 (0) | 2023.08.17 |