log.Sehee
[데이터 취업 스쿨 스터디 노트] 알고리즘 문풀 본문
선형 검색
import random
nums = random.sample(range(1, 21), 10)
print(f'Numbers: {nums}')
search = int(input('Search Number: '))
result = -1
for i, n in enumerate(nums):
if n == search:
result = i
break
if result < 0:
print('Search FAIL!!')
print('No results found')
else:
print('Search SUCCESS!!')
print('>>> Search Result <<<')
print(f'search result index: {result}')
print(f'search result number: {search}')

이진 검색
nums = [1, 2, 4, 6, 7, 8, 10, 11, 13, 15, 16, 17, 20, 21, 23, 24, 27, 28]
search = int(input('Search Number: '))
def found_num(basic, target):
start, end = 0, len(basic) - 1
while True:
mid_idx = (end + start) // 2
mid_value = basic[mid_idx]
print(f'start_idx: {start}, end_idx: {end}')
print(f'mid_idx: {mid_idx}, mid_value: {mid_value}')
if end - start <= 1:
mid_idx = -1
break
elif target < mid_value:
end = mid_idx
elif target > mid_value:
start = mid_idx
else:
break
return mid_idx
result = found_num(nums, search)
print(f'Numbers: {nums}')
print('>>> Search Results <<<')
print(f'search result index: {result}')
print(f'search result number: {nums[result]}')

순위 1
import random
nums = random.sample(range(50, 101), 20)
ranks, result_nums = [0] * 20, [0] * 20
for i, n in enumerate(nums):
for j in nums:
if n < j:
ranks[i] += 1
for i, n in enumerate(nums):
result_nums[ranks[i]] = n
print(f'nums: {nums}')
print(f'ranks: {ranks}')
print(f'sNums: {result_nums}')

순위 2
arr = [32, 'a', 'z', 45, 'G', 39, 50, 'T', 't', 22, 31, 55, 's', 63, 59, 'E']
result_arr = list(map(lambda x: ord(x) if isinstance(x, str) else x, arr))
ranks = [0] * len(arr)
for i, n in enumerate(result_arr):
for j in result_arr:
if n < j:
ranks[i] += 1
print(f'datas: {arr}')
print(f'ascIIDatas: {result_arr}')
print(f'ranks: {ranks}')
for i, n in enumerate(arr):
print(f'data: {n} \t rank: {ranks[i] + 1}')

버블 정렬
array = [10, 4, 1, 13, 11, 16, 19, 14, 6, 5]
def bubble_sort(array, ASC=True):
n = len(array)
for i in range(n - 1):
for j in range(n - i - 1):
if (ASC and array[j] > array[j + 1]) or (not ASC and array[j] < array[j + 1]):
array[j], array[j + 1] = array[j + 1], array[j]
print(f'nums: {array}')
print(f"not sorted nums: {array}\n")
bubble_sort(array, ASC=True)
print(f"sorted nums by ASC: {array}\n")
array = [10, 4, 1, 13, 11, 16, 19, 14, 6, 5]
bubble_sort(array, ASC=False)
print(f"sorted nums by DESC: {array}")

최댓값
import random, collections
nums = random.choices(range(1, 51), k=30)
M = max(nums)
result = collections.Counter(nums)[M]
print(f'nums: {nums}')
print(f'max num: {M}')
print(f'max num cnt: {result}')

최솟값
import random, collections, pprint
nums = random.choices(range(1, 51), k=30)
M = min(nums)
result = collections.Counter(nums)[M]
print(f'nums: {nums}')
print(f'min num: {M}')
print(f'min num cnt: {result}')

근삿값
depth = [0, 5, 10, 15, 20, 25, 30]
temp = [24, 22, 20, 16, 13, 10, 6]
input_depth = int(input('input depth: '))
result = 1000
for i, n in enumerate(depth):
t = abs(input_depth - n)
if result > t:
result = t
answer = i
print(f'depth: {input_depth}m')
print(f'water temperature: {temp[answer]}도')

내일의 학습 목표
EDA OT / CCTV