ΰ­¨β”ˆβ”ˆβ”ˆ Studyβ”ˆβ”ˆβ”ˆΰ­§/β†˜ Algorithm

[python] bisect

λΉ΅λΉ΅μƒˆ 2021. 6. 4. 15:30

 

bisect

- bisect : νŒŒμ΄μ¬μ—μ„œ 이진탐색을 μ‰½κ²Œ κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ μ œκ³΅ν•˜λŠ” λΌμ΄λΈŒλŸ¬λ¦¬μ΄λ‹€.

- μ •λ ¬λœ λ°°μ—΄μ—μ„œ νŠΉμ •ν•œ μ›μ†Œλ₯Ό μ°Ύμ•„μ•Όν•  λ•Œ 자주 μ‚¬μš©λœλ‹€.

bisect_left()bisect_right() ν•¨μˆ˜κ°€ κ°€μž₯ μ€‘μš”ν•˜κ²Œ μ‚¬μš©λœλ‹€.

 

bisect_left, bisect_right

- bisect_left(list, n) : μ •λ ¬λœ μˆœμ„œλ₯Ό μœ μ§€ν•˜λ©° 리슀트 list에 데이터 n을 μ‚½μž…ν•  κ°€μž₯ μ™Όμͺ½ μΈλ±μŠ€λ₯Ό μ°ΎλŠ”λ‹€.

- bisect_right(list, n) : μ •λ ¬λœ μˆœμ„œλ₯Ό μœ μ§€ν•˜λ©° 리슀트 list에 데이터 n을 μ‚½μž…ν•  κ°€μž₯ μ˜€λ₯Έμͺ½ μΈλ±μŠ€λ₯Ό μ°ΎλŠ”λ‹€.

- bisect_left(list, n, lo = 0, hi = len(list)) : lo와 hiλŠ” κ³ λ €ν•  리슀트의 뢀뢄집합을 μ§€μ •ν•˜λŠ” 데 μ‚¬μš©λœλ‹€.

 

예제

from bisect import bisect_left, bisect_right
list = [1, 3, 3, 5, 7, 8, 10]
x = 3
y = 8

print(bisect_left(list, x))
print(bisect_right(list, x))
'''
3
3
'''

print(bisect_left(list, y))
print(bisect_right(list, y))
'''
5
6
'''