안녕하세요?
이번 시간엔 파이썬에서의 스택과 큐를 알아볼 거에요.
스택, 큐, 다 처음 들어보신다고요?
이 글을 다 보고 나시면 완벽하게 알 수 있을 거에요.
그럼 시작해볼게요!
스택과 큐는 서로 다른 기능이에요.
우선 스택에 대해서 먼저 알아볼게요.
스택은 제한적으로 접근할 수 있는 나열 구조에요.
그 접근 방법은 언제나 목록의 끝에서만 일어나요.
스택은 실제 프로그래밍 세계에서는 자료형으로 구현되어 있지는 않아요.
단순히 개념으로 사용되는 추상 자료형이에요.
하지만 스택의 개념은 컴퓨터 과학의 많은 분야에서 사용되고 있고, 여러 프로그래밍 언어는 스택을 직접적이거나 간접적으로 지원해요.
스택을 쉽게 이해하려면 접시 쌓기를 이용하면 돼요.
접시를 차곡차곡 쌓고 난 뒤 다시 꺼내 쓸 때 맨 위에 있는 가장 나중에 쌓은 접시를 집어들게 되겠죠?
이게 바로 스택의 구조에요.
이러한 방식을 프로그래밍 세계에서는 LIFO(Last In First Out)라고 해요.
스택의 문법은 다음과 같아요.
stack=[]
stack.append('book')
stack.append('train')
stack.append('pencil')
topElement=stack.pop()
print(topElement)
stack이라는 리스트 안에 stack.append 라는 기능을 이용해 'book', 'train', 'pencil' 을 추가했죠?
stack.pop()이라는 기능을 이용하면 스택 방식으로 맨 마지막에 추가된 자료를 꺼낼 수 있어요.
'pencil' 이 출력되겠죠?
다음으로는 큐에 대해 알아볼 거에요.
큐는 FIFO(Fisrt In First Out)구조로 저장하는 형식을 말해요.
큐 구조도 스택처럼 실제 자료구형이 아닌 개념적으로 존재하는 자료 구조에요.
이 역시 지하철을 이용하면 쉽게 이해할 수 있어요.
지하철을 탈 때 스크린도어 앞에 줄을 가장 먼저 선 사람이 가장 먼저 타죠?
이게 바로 큐의 구조랍니다.
from queue import Queue
파이썬의 큐는 위 모듈을 이용해 구현이 가능해요.
from queue import Queue
a=Queue()
a.put("swim")
a.put("walk")
a.put("run")
print(a.get())
print(a.get())
print(a.get())
print(a.empty())
Queue 라는 리스트 안에 a.put() 을 이용해 "swim", "walk", "run" 이라는 요소를 넣고 a.get()으로 다시 꺼내는 코드에요.
"swim", "walk", "run" 순으로 출력되겠죠?
맨 마지막 코드는 리스트가 비어 있는지 확인하는 용도에요.
출력은 당연히 True로 돼요.
스택은 웹페이지 뒤로가기, 실행 취소 등의 기능에서 유용히 활용돼요.
그리고 큐는 콜센터 고객 대기 등에 활용할 수 있어요.
여러분도 스택, 큐, 여러분이 알고 있는 기능을 이용해 여러분만의 프로그램을 만들어보세요!