일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- Machine Learning
- 경제공부
- 코세라머신러닝
- POP
- 안드류응
- sql오답노트
- 프로그래머스
- groupby
- 코세라머신러닝강의
- orderby
- coursera
- DATE_FORMAT
- Andrew NG
- 코세라강의
- 인프런sql강의
- 머신러닝강의
- programmers
- map
- 코세라
- WHERE
- 파이썬
- Algorithm
- sql
- sorted
- 알고리즘
- 프로그래머스SQL
- SQL공부
- mysql
- PYTHON
- 머신러닝
Archives
- Today
- Total
미래를 예측하는 데이터분석가
[Algorithm] 알고리즘 우선순위 큐와 힙 그리고 스택 본문
1. 힙(Heap)
힙 : 리스트에서 가장 작은(또는 가장 큰) 요소에 반복적으로 접근하는 프로그램에 유용
- 힙의 시간복잡도
- 가장 작은 요소를 처리하는 시간복잡도는 O(1)
- 그 외의 조회, 추가, 수정을 처리하는 시간복잡도는 O(log n)
2. 스택(Stack)
스택 : 배열 인덱스 접근이 제한되며, 후입선출 (Last In, First Out)구조
-
스택의 시간복잡도
- 모든 스택의 시간복잡도는 O(1)
-
함수
- push : 스택 맨 끝에 항목을 삽입
- pop : 스택 맨 끝 항목을 반환하는 동시에 제거
- top/peek : 스택 맨 끝 항목을 조회
- empth : 스택이 비어있는지 확인
- size : 스택 크기를 확인
class Stack(object):
def __init__(self):
self.items = []
def isEmpth(self):
return not bool(self.item)
def push(self,value):
self.items.append(value)
def pop(self):
value = self.items.pop()
if value is not None:
return value
else:
print('Stack is empty.)
def size(self):
if self.items:
return len(self.items)
def peek(self):
if self.items:
return self.items[-1]
else:
print('Stack is empty.')
def __repr__(self):
return repr(self.items)
if __name__ = '__main__':
stack = Stack()
print('스택이 비었나요? {0}'.format(stack.isEmpty()))
print('스택에 숫자 0~9를 추가합니다.')
for i in range(10):
stack.push(i)
print('스택 크기:{0}'.format(stack.size()))
print('peek:{0}'.format(stack.peek()))
print('pop:{0}'.format(stack.pop()))
print('peek:{0}'.format(stack.peek()))
print('스택이 비었나요? {0}'.format(stack.isEmpty()))
pritn(stack)
3. 큐(Queue)
큐 : 먼저 들어온 데이터가 먼저 나가는 선입선출(First In, First Out)구조
-
시간복잡도
- 모든 시간복잡도는 O(1)
-
함수
- enqueue : 큐 뒤쪽에 항목을 삽입
- dequeue : 큐 앞쪽에 항목을 반환하고 제거
- peek/fornt : 큐 앞쪽의 항목을 조회
- empty : 큐가 비어있는지 확인
- size : 큐의 크기를 확인
class Queue(self):
def __init__(self):
return self.items = []
def isEmpty(self):
return not bool(self.items)
def enqueue(self):
self.items.insert(0,item)
def dequeue(self):
value = self.items.pop()
if value is not None:
return value
else:
print('Queue is empty.')
def size(self):
return len(self.items)
def peek(self):
if self.items:
return self.items[-1]
else:
print('Queue is empty.')
def __repr__(self):
return repr('Queue is empty.')
if __name__ == '__main__':
queue = Queue()
print('큐가 비었나요? {0}'.format(queue.isEmpty()))
print('큐에 숫자 0~9를 추가합니다.')
for i in range(10):
queue.enqueue(i)
print('큐 크기: {0}'.format(queue.size()))
print('peek :{0}'.format(queue.peek()))
print('dequeue': {0}'.format(queue.dequeue()))
print('peek: {0}'.format(queue.peek()))
print('큐가 비었나요? {0}'.format(queue.isEmpty()))
print(queue)
'알고리즘 > 공부하기' 카테고리의 다른 글
[Algorithm] 알고리즘 BFS, DFS란 무엇인가? (0) | 2021.02.04 |
---|