관리 메뉴

log.Sehee

[데이터 취업 스쿨 스터디 노트] 알고리즘 문풀 본문

Zerobase DS School

[데이터 취업 스쿨 스터디 노트] 알고리즘 문풀

Sehe_e 2024. 7. 24. 20:19

 


 

선형 검색

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

 

 

Comments