# bisect์ ์ด์ง ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์ง์
# ์ด์ง ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ด ๊น๋ํ๊ฒ ๋ชจ๋ ํํ๋ก ๊ตฌํ๋์ด ์์
# ์ ๋ ฌ๋ ๋ฆฌ์คํธ a ์ ๋ฐ์ดํฐ x์ ์ฝ์
ํ๋ค ๊ฐ์
# bisect_left(a, x)
# -> ์ ๋ ฌ ๋ ์์๋ฅผ ์ ์งํ๋ฉฐ a์ x๋ฅผ ์ฝ์
ํ ๋, ๊ฐ์ฅ ์ผ์ชฝ ์ธ๋ฑ์ค ๋ฐํ
# bisect_right(a, x)
# -> ์ ๋ ฌ ๋ ์์๋ฅผ ์ ์งํ๋ฉฐ a์ x๋ฅผ ์ฝ์
ํ ๋, ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์ธ๋ฑ์ค ๋ฐํ
import bisect
nums = [1,2,3,3,3,5,6,8,9]
nums.sort() #binary search๋ ์ ๋ ฌ ๋ ๋ฐฐ์ด์์ ์ฌ์ฉํด์ผํจ
print(bisect.bisect_left(nums, 10)) # 9
print(bisect.bisect_right(nums, 10)) # 9
print(bisect.bisect_left(nums, 3)) # 2
print(bisect.bisect_right(nums, 3)) # 5
ํ์ด์ฌ bisect๋ชจ๋์ ๊ณต์ ๋ฌธ์
#bisect.bisect_left(a, x, lo=0, hi=len(a))
#๋งค๊ฐ ๋ณ์ lo ์ hi๋ ๊ณ ๋ คํด์ผ ํ ๋ฆฌ์คํธ์ ๋ถ๋ถ์งํฉ์ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ
#bisect.bisect_left(๋ฐฐ์ด, ํ๊ฒ๋๋ฒ, ์์์ธ๋ฑ์ค, ๋ง์ง๋ง์ธ๋ฑ์ค + 1) ๋ผ๊ณ ์ดํด!
import bisect
nums = [-1, 0, 1, 2, 3, 4, 4, 9, 56, 90]
print(bisect.bisect_left(nums, 4)) #5์ถ๋ ฅ
print(bisect.bisect_left(nums,4, 6)) #4์ถ๋ ฅ