Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- HTTP
- element
- 리다이렉트
- backend
- 자바스크립트 이벤트
- jsp내장객체
- javascript
- 노드 객체
- 문자열
- 코딩테스트
- debugging
- 이벤트
- Array
- addEventListener
- webprogramming
- 노드 삭제
- HTML
- 노드 replace
- 노드
- Object
- 자바스크립트
- 포워드
- eventlistener
- 이벤트 핸들러
- Web
- HtmlElement
- 노드 추가
- innerHTML
- Servlet
- 파이썬 코테
Archives
- Today
- Total
seoyoung.dev
[ch10]데크,우선순위 큐 본문
[ 파이썬 알고리즘 인터뷰_알고리즘 스터디 리뷰 ]
* 데크(deque)
- 앞, 뒤 양쪽 방향에서 element 를 추가하거나 제거할 수 있다.
- 양 끝 element 접근하여 삽입 또는 제거 시, O(n) 이 소요되는 리스트에 반해, O(1) 로 접근 가능
from collections import deque
deq = deque()
deq.append(10)
deq.appendleft(0)
deq.pop()
deq.popleft()
deq.remove(10)
from collections import deque
deq = deque([1,2,3,4,5])
deq.rotate(1) # [5,1,2,3,4]
deq.rotate(-1) # [1,2,3,4,5]
* 우선순위 큐
-> 대부분의 우선순위 큐 문제는 heapq 모듈 사용해서 풀이
- heapq 모듈 : 최소 힙(Min heap)지원
import heapq
# 일반적인 리스트를 마치 최소 힙처럼 다룰 수 있도록 도와준다.
heap = []
# 힙에 원소 추가 O(logN)
heapq.heappush(heap, 1)
# 힙에서 원소 삭제 O(logN)
heapq.heappop(heap)
# 최소힙
# [1][2]..이후 요소들이 정렬되어 오름차순인 것은 X
# heappop 할 때, 이진 트리 재배치로 매번 새로운 최소값을 인덱스 0에 위치시키는 것
heap[0] #-최솟값 확인
# 리스트를 힙으로 변환
l = [1,2,3]
heapq.heapify(l)
- k 번째 최소값 / 최대값 찾기에 좋음
: heappop 할 때마다 최소값을 찾아서 pop 하고 그 다음 최소값을 [0] 위치에 갖다놓는다
: 따라서, heappop 을 k 번 호출하면서 최소값을 갱신하면 최종 최소값이 k 번째 최소값이 된다.
import heapq
def kth_smallest(nums, k):
heapq.heapify(nums)
for _ in range(k):
kth_min = heapq.heappop(nums)
return kth_min
nums = [8,6,5,4,25,13]
kth_smallest(nums, 4)
'TIL > Python' 카테고리의 다른 글
[ch11]해시 테이블 (0) | 2021.08.03 |
---|---|
[ch09]스택,큐 (0) | 2021.07.31 |
[ch_08]연결리스트 (0) | 2021.07.28 |
[ch_07]배열 (0) | 2021.07.23 |
[ch06]문자열 조작 (0) | 2021.07.18 |