파이썬의 스택(stack)과 큐(queue)
1. 스택(stack)
나중에 넣은 데이터를 먼저 반환하도록 설계된 자료구조
Last In First Out(LIFO)
Data 입력을 push, 출력을 pop
위 그림1은 스택을 가상적으로 표현한 그림
4를 먼저 넣고 다음에 10을 넣었다
마지막에 들어간 10을 처음으로 빼내는 모습
------------------------------------------------------------------------------------------------------------------------
이름 그 자체를 생각해보면 외울것이 아니다
데이터를 넣을수록 계속 쌓이는(stack) 자료구조
쌓여있는 구조(stack)에서 무언가 빼낼려면 안에있는 것보다 밖에있는 것을 먼저 뺄수있다는 것을 생각한다면?
---------------------------------------------------------------------------------------------------------------------------
리스트를 사용하여 쉽게 구현할 수 있다
a = [1,2,3,4,5]
a.append(10)
a.append(20)
a.pop()
20
c = a.pop()
c
10
a
[1,2,3,4,5]
append를 이용하여 넣고
pop을 이용하여 빼낸다
마지막으로 들어간 20이 먼저 빠지는 걸 확인
2. 큐(queue)
먼저 넣은 데이터는 먼저 반환되도록 설계된 자료구조
First In First Out (FIFO)
9가 들어가고 8이 들어가고 5가 들어가고 3이 들어가고
먼저 들어간 9가 가장 먼저 빠져나가는 모습
------------------------------------------------------------------------------------------------------------------
stack과는 반대로 안에 넣은 데이터를 먼저 뺄 수 있음
stack의 의미를 생각해서 stack이라는 구조가 쌓여있는 상태에서는 물리적으로 밖에 있는걸 먼저 뺄 수 있다는 걸 생각하고
queue는 그 반대로 안에 있는걸 뺄 수 있겠다라고 생각하면 외우기 편할듯
---------------------------------------------------------------------------------------------------------------------
리스트를 사용하여 큐를 구현할 수 있다
a = [1,2,3,4,5]
a.append(10)
a.append(20)
a.pop(0)
1
c = a.pop(0)
c
2
a
[3,4,5,10,20]
pop(0)을 이용하면 0번째 원소, 제일 먼저 들어간 원소를 빼낼 수 있다
'프로그래밍 > Python' 카테고리의 다른 글
코딩테스트에서 유용한 Counter와 deque (0) | 2022.01.12 |
---|---|
파이썬의 튜플(Tuple), 집합(set), 사전(dict)에 대하여 (0) | 2022.01.11 |
Python의 여러가지 논리연산 (0) | 2021.12.27 |
Python의 라이브러리인 모듈(module)과 프로젝트(project) (0) | 2021.12.25 |
빅데이터 분석기사 실기를 준비하는 사람들에게 드리는 팁(3회 이후) (0) | 2021.12.23 |