LIFO: Last-In First-Out 후입선출
가장 마지막에 쌓은 데이터를 가장 먼저 꺼내 사용하는 방식

특징
구현코드
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def push(self, item):
self.items.append(item)
def pop(self):
if not self.is_empty():
return self.items.pop()
def peek(self):
if not self.is_empty():
return self.items[-1]
def size(self):
return len(self.items)
FIFO: First-In First-Out 선입선출
가장 처음에 쌓은 데이터를 가장 먼저 꺼내 사용하는 방식

특징
구현코드
class Queue:
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def enqueue(self, item):
self.items.append(item)
def dequeue(self):
if not self.is_empty():
return self.items.pop(0)
def peek(self):
if not self.is_empty():
return self.items[0]
def size(self):
return len(self.items)
오름차순으로 정렬된 배열을 반복적으로 반으로 나누어 target이 선택될 때까지 탐색하는 알고리즘

과정
구현코드