Computer Science/Algorithms

[Python Algorithms] 큐(Queue)

Hannah_ko 2020. 11. 19. 16:58
SMALL

큐(Queue)는 스택과 함께 많이 사용되는 기본 자료구조이다.

스택이 LIFO(Last In First Out) 방식이라면 큐는 FIFO(First In First Out) 선입선출 방식이다.

 

큐라는 이름에서 알 수 있듯이 줄을 선 사람들의 모습을 생각하면 이해하기 편하다.

줄을 선 사람들은 줄을 선 순서대로 입장하거나 물건을 살 수 있기 때문에 선입선출의 구조라고 볼 수 있다.

 

큐에서 줄을 서는 것과 같은 역할을 풋(put)이라 하고

앞에서부터 입장하는 것과 같은 역학을 겟(get)이라 한다.

 

큐는 스택과 달리 배열을 사용하는 것이 더 유용하다.

def put(item):
    queue.append(item)
    
def get():
    return queue.pop(0)

if __name__ == '__main__':
    queue = []
    put(1)
    put(2)
    put(3)
    put(4)
    
    print("Queue: ")
    print(queue)
    print("\n")
    print("Pop: ")
    while queue:
      print("Pop > {}".format(get()))
    

put 함수를 이용해 queue이라는 리스트에 1, 2, 3, 4을 넣어주었고(put)

이 후, pop(0)함수(첫 값을 뽑아줌)를 이용해 while문을 돌며 리스트의 끝에서부터 하나씩 빼주었다(get).

3 번의 push와 3 번의 pop을 이용해 마지막 stack 리스트에는 아무것도 남지 않은 것을 알 수 있다.

 


[참고 문헌]

 

1. 위키백과, "스택", ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D

2. 박선주, 영진닷컴, "필수 알고리즘 with 파이썬"

 

 

LIST