본문 바로가기

Language/Python

[Python] bisect - 컴도리돌이

728x90

알고리즘 문제를 해결하다가 다른 분의 블로그에서 제가 푼 알고리즘 문제를 파이썬에서 제공하는 표준 라이브러리인 bisect를 이용해서 간단하게 문제를 해결한 것을 보고, 요번 기회에 bisect 라이브러리를 정리할려고 한다.


bisect


bisect는 이진 검색 알고리즘을 이용하여 입력 받은 시퀀스를 검색하는 기능을 제공한다.

import bisect

tmp = [1,3,4,5]

bisect.bisect(tmp,2)

bisect_left, bisect_right

bisect는 bisect_right와 동일하며, 이 두 함수는 리스트 a에 x와 동일한 값이 존재하면 해당 값의 뒷 인덱스 값을 반환한다. 하지만 bisect_left는 동일한 값의 인덱스를 반환하다.

import bisect

tmp = [1,3,4,5]
print(bisect.bisect(tmp,2))
# 출력값 :1

print(bisect.bisect_right(tmp,3))
# 출력값 :2
print(bisect.bisect_left(tmp,6))
# 출력값 :4

insort

insort는 정렬된 시퀀스 a에 x값을 삽입한다. insort도 동일하게 insort_right와 insort_left가 존재하며 동작 방식은 bisect와 동일하다.

import bisect
tmp = [1,3,4,5]
bisect.insort(tmp,2)
print(tmp)
# 출력값 :[1,2,3,4,5]