1. μˆœμ°¨νƒμƒ‰:

 

리슀트 μ•ˆμ— μžˆλŠ” νŠΉμ •ν•œ 데이터λ₯Ό μ°ΎκΈ° μœ„ν•΄μ„œ μ•žμ—μ„œ λΆ€ν„° 데이터λ₯Ό ν•˜λ‚˜μ”© μ°¨λ‘€λŒ€λ‘œ ν™•μΈν•˜λŠ” 방법

count()λ©”μ„œλ“œ λ˜ν•œ μˆœμ°¨νƒμƒ‰μ΄ μ΄μš©λœλ‹€.

 

 

2. 이진탐색:

 

이진탐색은 λ°°μ—΄ λ‚΄λΆ€μ˜ 데이터가 μ •λ ¬λ˜μ–΄ μžˆμ–΄μ•Όλ§Œ μ‚¬μš© ν•  수 μžˆλŠ” μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€.

λ³€μˆ˜ 3개λ₯Ό μ‚¬μš©ν•˜λŠ”λ° μ‹œμž‘μ , 끝점 그리고 쀑간 점을 μ΄μš©ν•œλ‹€. μ°ΎμœΌλ €λŠ” 데이터와 쀑간점 μœ„μΉ˜μ— μžˆλŠ” 데이터λ₯Ό 반볡적으둜 λΉ„κ΅ν•΄μ„œ μ›ν•˜λŠ” 데이터λ₯Ό μ°ΎλŠ”κ²Œ 이진탐색 과정이닀.

 

μ‹œκ°„ λ³΅μž‘λ„λŠ” O(nlogn)이닀. (ν•œλ²ˆ ν™•μΈν• λ•Œ λ§ˆλ‹€ ν™•μΈν•˜λŠ” μ›μ†Œμ˜ κ°œμˆ˜κ°€ μ ˆλ°˜μ”© 쀄어듀기 λ•Œλ¬Έ)

 

이진탐색 μ‰½κ²Œ 보지 말자!!!

 

'μ‘΄ 벀틀리'(μƒκ°ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ°μ˜ ν•„μž) 의 말에 λ”°λ₯΄λ©΄ μ œλŒ€λ‘œ 이진 탐색 μ½”λ“œλ₯Ό μž‘μ„±ν•œ ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” 10% 내외라 ν•  μ •λ„λ‘œ μ‹€μ œ κ΅¬ν˜„μ€ κΉŒλ‹€λ‘­λ‹€.

 

 

-bisect-이진 탐색을 μ œλŒ€λ‘œ μ§œλŠ” 것 λ˜ν•œ μ€‘μš”ν•˜μ§€λ§Œ 파이썬으둜 μ•Œκ³ λ¦¬μ¦˜μ„ μ€€λΉ„ν•˜λŠ” μ‚¬λžŒμ΄λΌλ©΄ 맀우 μœ μš©ν•˜κ²Œ 쓰일 것 κ°™λ‹€.bisect λΌμ΄λΈŒλŸ¬λ¦¬λŠ” 이진 탐색을 μ‰½κ²Œ κ΅¬ν˜„ ν•  수 μžˆλ„λ‘ μ œκ³΅λœλ‹€.

 

array κ°€ μ •λ ¬λ˜μ–΄ μžˆμ„λ•Œfrom bisect import bisect_left, bisect_right λ₯Ό μž„ν¬νŠΈ ν•˜κ³ bisect_left(array,x) λΌκ³ ν•˜λ©΄ x κ°€ μ‚½μž…λ  수 μžˆλŠ” 인덱슀의 μœ„μΉ˜ μ€‘μ—μ„œ κ°€μž₯ μ™Όμͺ½ 인덱슀λ₯Ό λ°˜ν™˜ν•œλ‹€.bisect_right(array,x) 라고 ν•˜λ©΄ x κ°€ 삽일될 수 μžˆλŠ” 인덱슀의 μœ„μΉ˜ μ€‘μ—μ„œ κ°€μž₯ 였λ₯Έμͺ½ 인덱슀λ₯Ό λ°˜ν™˜ν•œλ‹€.

 

μ΄λ•Œ μ‚½μž…λ  indexλ₯Ό μ•Œμ•˜μœΌλ‹ˆ μ‚½μž…ν•˜κ±°λ‚˜ κ·Έλ‹€μŒ μž‘μ—…μ„ ν•˜λ©΄ 될 것이닀. (listμ—μ„œ μ›μ†Œλ₯Ό μ‚½μž…ν•˜λŠ” insert()λ©”μ„œλ“œλ₯Ό κΈ°μ–΅ν•˜μž)