CS/알고리즘 지식
코테용 최소 필요 자료구조 개괄
세밍_
2021. 4. 18. 20:55
728x90
반응형
1. 스택
- LIFO(Last In First Out)구조 : 가장 마지막에 들어간 원소가 가장 먼저 나옴
- 리스트를 사용해 구현
- 알 수 있는 값은 맨 위의 값 : 맨 위에 새 값을 쌓아 올리거나 맨 위에 있는 값을 빼거나 삽입/삭제
- 삽입 : push 연산 / 삭제 : pop 연산 / 맨위의 값을 보는 연산 : top 연산
- 파이썬에 따로 라이브러리가 있진 않고 리스트를 스택처럼 사용
- O(1)
2. 큐
- FIFO(First In First Out) : 가장 먼저 들어갔던 값이 가장 먼저 나온다
2.1 덱
- 앞 뒤로 모두 출입 가능
- 파이썬에서 기본으로 제공해주는 collections 모듈의 deque 클래스 사용 : 양방향 연결리스트로 구현되어 있어서 리스트보다 출입 연산에 효율적 : deque가 pop에 O(1)복잡도 가진다면 이라면 list는 pop에 O(n)의 복잡도 가짐
- Deque : Double Ended Queue
- append(x) : deque의 오른쪽에 x 더함
- appendleft(x) : deque의 왼쪽에 x 더함
- pop() : deque의 오른쪽에서 요소 꺼냄
- popleft(): deque의 왼쪽에서 요소 꺼냄
2.2 우선순위 큐
- 우선순위가 가장 높은 데이터를 가장 먼저 삭제하는 자료구조
- 만드는 법
- 리스트를 이용하는 법 : 삽입시간 - O(1), 삭제시간 - O(N)
- 힙(heap) 이용하는 법 : 삽입시간 - O(logN), 삭제시간- O(logN)
- 파이썬에서 기본으로 제공해주는 heapq라이브러리 사용 : 요소를 push,pop 할때마다 자동으로 정렬
- 파이썬에서 제공하는 heap 라이브러리는 값이 낮은 순(우선순위가 높음)으로 먼저 뽑아내는 최소힙
- heapify() : 기존의 배열을 heap 구조로 만듦
- heappush(배열이름, 요소) : heap(배열)에 요소를 추가
- heappop(배열이름) : heap(배열)에서 요소를 제거
728x90
반응형