주로 수학과 연관되어 활용
# 팩토리얼 예시코드
n = int(input("숫자 입력하세요 : "))
def factorial(n) :
if n > 0 :
return n * factorial(n - 1)
else :
return 1
print('팩토리얼 결과 : ', factorial(n))
데코레이터를 통한 속도 측정
# case - 1
@check_time # 데코레이터 생성하여 활용
def sum_n(n):
s = 0
for i in range(1, n+1):
s += i
return s
if __name__ == "__main__":
sum_n(100000)
교환 (SWAP)
# 첫번째 방법
a = 3
b = 1
temp = a
a = b
b = temp
print(a,b)
Linear Search (선형)
def linear_search(linear_arr, search_number):
for i in range(len(linear_arr)):
if linear_arr[i] == search_number:
return i
linear_arr = [5,22,87,1,3]
search_number = 1
print("search index : ",linear_search(linear_arr, search_number))
Binary Search (이진)
반복을 통해 숫자를 반으로 줄이면서 검색
선형보다 속도가 더 빠름
이미 정렬된 경우에만 작동
#찾고자 하는 수의 인덱스를 반환한다
def test_binary_search(test_list, test_search_item):
low = 0 # 인덱스가 0(리스트의 첫번째 항목)으로 주어진다.
high = len(test_list) - 1 # 인덱스의 마지막 항목(리스트길이 - 1)
while low <= high:
middle = (low + high) // 2 # middle 변수를 생성해서 이진검색속도를 빠르게 한다.
search_value = test_list[middle]
if search_value == test_search_item:
return middle # 이진검색을 통해 값을 찾는 경우, 검색값의 인덱스를 반환한다.
if search_value > test_search_item:
high = middle - 1
else:
low = middle + 1
return '인덱스를 찾지 못함' # 이진검색을 통해 값을 찾지 못하는 경우, 별도의 인덱스를 반환하지 않는다.
test_list = [6,12,17,23,38,45,77,84] # 이진검색의 조건에 적합하도록 이미 정렬된 리스트를 활용한다.
print('이진검색을 통해 검색된 리스트 인덱스 : ', test_binary_search(test_list, 12))
