스택이란?
스택(Stack)은 번역하자면
즉, '무언가를 쌓다'가 됩니다.
예시를 들자면 아래 사진과 같습니다.
아래서부터 차곡차곡 쌓아올리는 것. 그것이 바로 스택입니다.
그래서 만일 맨 아래 책을 꺼내고 싶다면 위에 책들을 하나하나 들어서 치워야겠지요.
고로 스택을 다른 말로 LIFO(Last In, First Out) 자료구조하고 부릅니다.
비슷한 예제들
- 문이 한 방향에 있는 엘리베이터
- 웹사이트에서 전 페이지로 되돌리기
class Stack:
def __init__(self):
self.data = []
def size(self):
return len(self.data)
def push(self, item):
self.data.append(item)
def pop(self):
return self.data.pop(0)
def peek(self):
return self.data[len(self.data)-1]
큐란?
큐(Queue)는 번역하면 대기열이란 의미로 처음 들어온 사람이 가장 빨리 나간다는 뜻입니다.
아래는 예시 사진입니다.
사진 속 사람들은 차례차례로 순서를 기다립니다. 이것이 바로 큐입니다.
이 때문에 큐를 다른 말로 FIFO(First In, First Out)이라고 부릅니다.
*삐뽀라고 부르기도 ㅋㅋ
class Queue:
def __init__(self):
self.data = []
def size(self):
return len(self.data)
def enqueue(self, item):
self.data.append(item)
def dequeue(self):
return self.data.pop(0)
def peek(self):
return self.data[0]
size : 배열 길이
enqueue : 값 집어넣기
dequeue : 첫 값 빼기 & 보기
peek : 첫 값 보기