티스토리 뷰

큐(Queue)- Priority
우선순이가 높은 데이터를 먼저 꺼내는 구조
    → 우선순위 : 0,1,2,...,n 순으로 0이 가장 우선순위가 높다.
    → LIFO & FILO(Last-In, First-Out & First-In, Last-Out)

-  용어
    → Enqueue : 큐에 데이터를 넣는 기능
    → Dequeue : 큐에서 데이터를 꺼내는 기능

 

Enqueue : 
큐에 데이터가 들어갈 때

 Dequeue : 
큐에서 데이터가 나갈 때

 

 

 


Python 라이브러리
import queue
# queue 생성 
priority_queue = queue.PriorityQueue()

 

 put()을 사용하여 생성된 Queue에 데이터 넣기

# 생성된 queue에 데이터 입력
priority_queue.put((4, 'r'))
priority_queue.put((1, '7'))
priority_queue.put((6, 'j'))
priority_queue.put((3, 'p'))
priority_queue.put((0, 'F'))
priority_queue.put((5, 'o'))
priority_queue.put((2, ' '))
priority_queue.put((8, 'c'))
priority_queue.put((7, 'e'))
priority_queue.put((9, 't'))

 

→ qsize()를 사용하여 생성된 Queue안의 데이터 수 확인

# qsize() 를 사용하여 queue안의 데이터 수 확인
priority_queue.qsize()
10

 

 get()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 출력
priority_queue.get()
(0, 'F')

 

 get()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 출력
priority_queue.get()
(1, '7')

 

 get()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 출력
priority_queue.get()
(2, ' ')

 

→ qsize()를 사용하여 생성된 Queue안의 데이터 수 확인

# qsize() 를 사용하여 queue안의 데이터 수 확인
priority_queue.qsize()
7

 

 get()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 출력
priority_queue.get()
(3, 'p')

생략


→ get()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 출력
priority_queue.get()
(9, 't')

 

→ qsize()를 사용하여 생성된 Queue안의 데이터 수 확인

# qsize() 를 사용하여 queue안의 데이터 수 확인
priority_queue.qsize()
0

 

 


Python 구현
class queue_Priority:
    
    def __init__(self):
        """
        --Queue를 리스트로 구현--
        비어있는 리스트 생성
        """
        self.list_ = []
    
    def enqueue(self, data):
        """
        --Queue에 data를 넣는 기능--
        data : (int, 'Value') 우선순위 숫자 및 넣을 값 입력 
        Ex. (0, 'test')
            (1, 'Test')
        """
        self.list_.append(data)
        
    def dequeue(self):
        """
        --Queue에 data를 꺼내는 기능--
        우선순위가 높은 값 바인딩 및 리스트에서 삭제
        """
        self.list_.sort(key=lambda x:x[0])
        self.get = self.list_[0]
        del self.list_[0]
        
        return self.get
    
    def qsize(self):
        """
        --Queue data 갯수 출력--
        리스트안에 들어있는 요소 값 출력
        """
        return len(self.list_)

 

# queue 생성 
data = queue_Priority()

 

 put()을 사용하여 생성된 Queue에 데이터 넣기

# 생성된 queue에 데이터 입력
data.enqueue((4, 'r'))
data.enqueue((1, '7'))
data.enqueue((6, 'j'))
data.enqueue((3, 'p'))
data.enqueue((0, 'F'))
data.enqueue((5, 'o'))
data.enqueue((2, ' '))
data.enqueue((8, 'c'))
data.enqueue((7, 'e'))
data.enqueue((9, 't'))

 

→ qsize()를 사용하여 생성된 Queue안의 데이터 수 확인

# qsize() 를 사용하여 queue안의 데이터 수 확인
data.qsize()
10

 

→ get()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 꺼내기
data.dequeue()
(0, 'F')

 

→ get()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 꺼내기
data.dequeue()
(1, '7')

 

→ get()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 꺼내기
data.dequeue()
(2, ' ')

 

→ qsize()를 사용하여 생성된 Queue안의 데이터 수 확인

# qsize() 를 사용하여 queue안의 데이터 수 확인
data.qsize()
7

 

→ get()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 꺼내기
data.dequeue()
(3, 'p')

생략


→ get()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 꺼내기
data.dequeue()
(9, 't')

 

→ qsize()를 사용하여 생성된 Queue안의 데이터 수 확인

# qsize() 를 사용하여 queue안의 데이터 수 확인
data.qsize()
0
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/03   »
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
글 보관함