본문 바로가기
Python

[Python] 자료구조 - 스택(stack), 큐(queue)

by 박사과정 모닝 2023. 10. 29.
반응형

이번 포스팅에서는 파이썬에서 많이 사용되는 자료구조 중 스택과 큐를 함께 알아보도록 하겠습니다. 스택과 큐는 비슷한 듯 다른 특징을 가지고 있는데요! 아래에서 정리해 보도록 하겠습니다.

 

스택(Stack)

  • LIFO(Last In First Out): 말 그대로 마지막에 들어온 것이 가장 먼저 나간다. 즉, 들어온 순서의 반대로 나간다.
  • 스택에 데이터를 저장하는 것을 푸시(push), 데이터를 추출하는 것을 팝(pop)이라고 한다.

1, 2, 3, 4, 5를 stack에 push
stack에 저장된 데이터를 pop

  • 스택 구현
    • 파이썬에서 스택을 구현할 때에는 리스트를 사용합니다.
    • 리스트를 만든 다음, append() 함수를 사용에 값을 저장하고 pop() 함수를 사용해 값을 추출합니다.
    • 이때, pop() 함수를 사용하면 빠져나온 값이 반환됩니다.
a = [1, 2, 3, 4, 5]
a.append(10) 
print(a)
# >>> a = [1, 2, 3, 4, 5, 10]
a.append(20)
print(a)
# >>> a = [1, 2, 3, 4, 5, 10, 20]
a.pop()
# >>> 20
print(a)
# >>> a = [1, 2, 3, 4, 5, 10]
a.pop()
# >>> 10
print(a)
# >>> a = [1, 2, 3, 4, 5]

 

큐(queue)

  • FIFO(First In First Out): 가장 먼저 들어온 것이 가장 먼저 나간다. 즉, 들어온 순서대로 다시 나간다.
  • 스택에 데이터를 저장하는 것을 푸시(push), 데이터를 추출하는 것을 팝(pop)이라고 한다.

1, 2, 3, 4, 5를 queue에 push
queue에 저장된 데이터를 pop

  • 큐 구현
    • 파이썬에서 스택을 구현할 때에도 리스트를 사용합니다.
    • 리스트를 만든 다음, append() 함수를 사용에 값을 저장하고 pop(0) 함수를 사용해 인덱스 0의 값을 추출합니다.
    • 이때, 마찬가지로 pop(0) 함수를 사용하면 빠져나온 값이 반환됩니다.
a = [1, 2, 3, 4, 5]
a.append(10)
print(a)
# >>> a = [1, 2, 3, 4, 5, 10]
a.append(20)
print(a)
# >>> a = [1, 2, 3, 4, 5, 10, 20]
a.pop(0)
# >>> 1
print(a)
# >>> a = [2, 3, 4, 5, 10, 20]
a.pop(0)
# >>> 2
print(a)
# >>> a = [3, 4, 5, 10, 20]

 

 

스택과 큐 비교

자료 구조 스택(stack) 큐(queue)
생성 리스트 활용
데이터 입력 append()
데이터 추출 pop() pop(0)
추출된 데이터 반환 O O
입력 순서 1, 2, 3, 4, 5
추출 순서 5, 4, 3, 2, 1 1, 2, 3, 4, 5
반응형