알고리즘/부록

bisect

HeyTeddy 2021. 12. 20. 11:14
반응형

bisect

- 이진 탐색을 구현할 수 있도록 파이썬에서 제공하는 라이브러리

- 정렬된 배열에서 특정한 원소를 찾을 때 효과적

- bisect_left(a, x) : 정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 왼쪽 인덱스를 찾는 메서드

- bisect_right(a, x) : 정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 오른쪽 인덱스를 찾는 메서드

from bisect import bisect_left, bisect_right

a = [1,2,4,4,8]
x = 4

print(bisect_left(a, x))
print(bisect_right(a, x))

## 2
## 4

 

정렬된 리스트에서 값이 특정 범위에 속하는 원소의 개수 구할 때

from bisect import bisect_left, bisect_right

# 값이 [left_value, right_value]
def count_by_range(a, left_value, right_value):
    right_index = bisect_right(a, right_value)
    left_index = bisect_left(a, left_value)
    return right_index - left_index

# 리스트 선언
a = [1,2,3,3,3,3,4,4,8,9]

# 값이 4인 데이터 개수 출력
print(count_by_range(a,4,4))

# 값이 [-1, 3] 범위에 있는 데이터 개수 출력
print(count_by_range(a,-1,3))

# 2
# 6
반응형

'알고리즘 > 부록' 카테고리의 다른 글

collections (deque/Counter)  (0) 2021.12.21
heapq 힙  (0) 2021.12.20