์๊ณ ๋ฆฌ์ฆ์ ํ๋ค ๋ณด๋ฉด ์๊ฐ๋ณต์ก๋์ ๋ช์ ๋น ์ง ๋๊ฐ ์๋ค.
ํนํ ์์ ๋ฒ์๊ฐ ํฌ๋ฉด ๋ฐฐ์ด ๋ด ํน์ ํ ๊ฐ์ ์ฐพ์ ๋
์๋์ ๊ฐ์ ๋ฐฉ์์ ๋ชจ๋ ๋ฐฐ์ด์ ํ์ํ๊ธฐ ๋๋ฌธ์ ์์ฒญ๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ฒ ๋๋ค.,
i in arr
์ด๋ด๋ ์ฌ์ฉํ ์ ์๋ ์ด๋ถํ์!
์ด๋ถํ์์ ๋ฐฐ์ด์์ ํน์ ํ ๊ฐ์ ์ฐพ์ ๋ ์์ฐจ ํ์์ฒ๋ผ ๋งค๋ฒ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒดํฌํ์ฌ ๊ฐ์ ์ฐพ๋๊ฒ ์๋๋ผ,
ํ์๋ฒ์๋ฅผ ์ ๋ฐ์ฉ ์ค์ฌ๊ฐ๋ฉฐ ์ฐพ์๊ฐ๋ search ๋ฐฉ๋ฒ์ด๋ค.
๊ทธ๋ฆผ์ ์์ฑํ๊ฒ ๊ทธ๋ ธ์ง๋ง ์ด๋ถํ์์ ์์ฃผ ์ง๊ด์ ์ด๊ฒ ํํํด๋ณด์๋ค. ๐
๊ทธ๋ ๋ค๋ฉด ์ฝ๋ ๊ตฌํ ์์ ์ด๋ป๊ฒ ํํ๋ ๊น?
์ง๊ทนํ ๊ฐ์ธ์ ์ด์ง๋ง ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ๋ง๋ฌ์ ๋ ์ ์ฉํ ๋งํ ์ ํ์ ํฌ๊ฒ 3๊ฐ์ง๋ก ๋ถ๋ฆฌํ๋๋ฐ,
1) ๋ฐฐ์ด๋ด ํน์ ํ ๊ฐ์ idx๋ฅผ ์ฐพ์ ๋ 2) ๋ฐฐ์ด๋ด์์ ํน์ ํ ๊ฐ์ด ์ถ๊ฐ๋ ๋์ ๊ทธ idx 3)
1) ๋ฐฐ์ด๋ด ํน์ ํ ๊ฐ์ idx๋ฅผ ์ฐพ์ ๋
arr = [1,2,4,5,7]
def bin_search(target,data):
start = 0
end = len(data)-1
findSuc = 0
while start <= end:
mid = (start+end)//2
if data[mid] == target:
return mid
break
elif data[mid] <= target:
start = mid +1
else:
end = mid-1
return -1
print(bin_search(4,arr)); // 2
2) ๋ฐฐ์ด ๋ด ํน์ ํ ๊ฐ์ด ์ถ๊ฐ๋ ๋ ๊ทธ idx (์ค๋ฆ์ฐจ์)
==
๋ฐฐ์ด ๋ด ํน์ ํ ๊ฐ์ ์ค๋ฅธ์ชฝ ์ธ๋ฑ์ค ๊ตฌํ๊ธฐ bisect_right
๋ฐฐ์ด๋ด ํน์ ํ ๊ฐ์ด ์ถ๊ฐ๋ ๋ ๊ทธ ์๋ฆฌ๊ฐ ์ ๋ ฌ๋ ์์์์ ์ด๋ค idx์ธ์ง ์๋ ค์ฃผ๋ ๊ฒ์ธ๋ฐ,
target์ด ๋ฐฐ์ด ๋ด์ ์์ด๋ ๊ทธ ์์น๋ฅผ ์ฐพ์๋ผ ์ ์๋ค.
arr= [1,2,4,5,7]
def bin_search(target,data) :
start=0
end=len(data)-1
while(start<=end):
mid=(start+end)//2
if data[mid] <=target:
start=mid+1
else:
end=mid-1
return start
print(bin_search(4,arr)); // 3
print(bin_search(3,arr)); // 2
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ์
ํด๋น ๋ก์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ฐ bisect_right
bisect_left(literable, value) : ์ผ์ชฝ ์ธ๋ฑ์ค๋ฅผ ๊ตฌํ๊ธฐ
from bisect import bisect_right
arr= [1,2,4,5,7]
print(bisect_right(arr,4)) // 3
print(bisect_right(arr,3)) // 2
3) ๋ฐฐ์ด ๋ด ํน์ ํ ๊ฐ์ ์ผ์ชฝ ์ธ๋ฑ์ค ๊ตฌํ๊ธฐ bisect_left
from bisect import bisect_right
arr= [1,2,4,5,7]
print(bisect_right(arr,4)) // 2
print(bisect_right(arr,3)) // 1
ํนํ bisect_left ์ bisect_right๋ ์ ๋ง ํท๊ฐ๋ ค์ ์ด๋ป๊ฒ ์ต์ํ๊ฒ ๋ง๋ค ์ ์์๊น ๊ณ ๋ฏผ์ ํ๋๋ฐ,
์์๋ก
arr=[1,2,4,5,7]
#right
bisect_right(arr,4) # ์์ ๋
bisect_right(arr,3) # ์์ ๋
#left
bisect_left(arr,4) # ์์ ๋
bisect_left(arr,3) # ์์ ๋
์ด๋ ๊ฒ ํด๋นํ๋ target ๊ฐ์ ๋ฐฐ์ด์ ๋ฃ์ ํ์ ๊ทธ ์ธ๋ฑ์ค๋ฅผ ๋น๊ตํด์ ์ด๋ค ๊ฐ์ด ๋์ฌ์ง ๋น๊ตํด๋ณด๋ฉฐ ์ ๋ฆฌํ๋๋
ํ์คํ๊ฒ ์ ๋ฆฌ๊ฐ ๋์๋ค. ์ ๋ ์์ด๋ฒ๋ฆฌ์ง ์์ ๊ฒ ๊ฐ๋ค.
์ฐธ๊ณ : https://programming119.tistory.com/196 [๊ฐ๋ฐ์ ์์ ์จ๋ค ํ์๋ชจ์]
'๐ ์๊ณ ๋ฆฌ์ฆ > ์๊ณ ๋ฆฌ์ฆ & ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ์ด์ฌ์ ์ ๋ ฅ ๊ฐ ๋ฐ๊ธฐ (0) | 2021.03.20 |
---|
๋๊ธ