# numpy.median 사용 / 슬라이싱, del 사용
import numpy as np
# 찾고자 하는 숫자가 있는 리스트 생성
a = [1,7,11,12,14,23,33,47,51,64,67,77,139,672,871]
# 리스트야! 내 숫자 담고 있늬? / binary함수야! 얼마나 빨리 찾길래 내가 널 손수 만들어야하늬?
def binary(list_data,find_num,count=0) :
if np.median(list_data) < find_num : # 47 < 67
count += 1
del list_data[:list_data.index(np.median(list_data))+1]
elif np.median(list_data) > find_num :
count += 1
del list_data[list_data.index(np.median(list_data)):]
elif np.median(list_data) == find_num :
return count, list_data
else :
return "없다 이놈아"
return binary(list_data,find_num,count)
binary(a,67)
##########################################################################################
# 원래의 데이터 손상없는 ver.
import numpy as np
a = [1,7,11,12,14,23,33,47,51,64,67,77,139,672,871]
# 리스트야! 내 숫자 담고 있늬? / binary함수야! 얼마나 빨리 찾길래 내가 널 손수 만들어야하늬?
def binary(data,find_num,count=0) :
list_data = list(data)
median = np.median(list_data)
if median < find_num :
count += 1
del list_data[:list_data.index(median)+1]
elif median > find_num :
count += 1
del list_data[list_data.index(median):]
elif median == find_num :
count += 1
return ("%d은(는) 이진탐색 %d번 만에 찾았습니다"%(find_num,count))
else :
return "없다 이놈아"
return binary(list_data,find_num,count)
print(binary(a,67))
print(a) # a는 데이터에 대해서는 훼손되지 않았음
'코딩 > 문제' 카테고리의 다른 글
문제6. (파이썬) 합병정렬 (0) | 2020.06.05 |
---|---|
문제5. (파이썬) 삽입정렬 (0) | 2020.06.04 |
문제4. (파이썬) 버블정렬 (0) | 2020.06.03 |
문제2. (파이썬) matrix_convolution 구현 (0) | 2020.06.01 |
문제1. (파이썬) np.dot을 for문으로 구현하기 (0) | 2020.05.15 |