Python 알고리즘 문제풀이 1

조천룡·2023년 5월 25일

python

목록 보기
11/13
post-thumbnail

검색 알고리즘

  • 숫자로 이루어진 리스트에서 사용자가 입력한 숫자를 검색하는 모듈을 다음 요건에 따라 만들어 보자.

코드1

def searchNumByLineAlgorithm(ns, sn):

    searchResultIdx = -1

    print(f'Number: {ns}')
    print(f'Search Number: {sn}')

    n = 0
    while True:
        if n == len(ns):
            print('Search FAIL!!')
            break

        if ns[n] == sn:
            searchResultIdx = n
            print('Search SUCCESS!!')
            print(f'Search result Index: {searchResultIdx}')
            break

        n += 1

    return searchResultIdx

코드2

import lineMod
import random

if __name__ == '__main__':
    rNums = random.sample(range(1,21),10)
    searchNum = int(input('Input search number: '))

    resultIdx = lineMod.searchNumByLineAlgorithm(rNums, searchNum)
    if resultIdx == -1:
        print('No result found')
        print(f'search result index: {resultIdx}')
    else:
        print('>>> Search Results <<<')
        print(f'search result index: {resultIdx}')
        print(f'search result number: {rNums[resultIdx]}')

출력


순위 알고리즘

  • 숫자로 이루어진 리스트에서 아이템의 순위를 출력하고, 순위에 따라 아이템을 정렬하는 모듈을 만들어보자.

코드1

def rankAlgorithm(ns):

    ranks = [0 for i in range(len(ns))]

    for idx, n1 in enumerate(ns):
        for n2 in ns:
            if n1 < n2:
                ranks[idx] += 1

    print(f'nums: {ns}')
    print(f'ranks: {ranks}')

    for i, n in enumerate(ns):
        print(f'num: {n} \t rank: {ranks[i]+1}')

    sortedNums = [0 for n in range(len(ns))]

    for idx, rank in enumerate(ranks):
        sortedNums[rank] = ns[idx]

    return sortedNums

코드2

import random
import rankMod

if __name__ =='__main__':

    nums = random.sample(range(50,101), 20)
    sNums = rankMod.rankAlgorithm(nums)
    print(f'sNums: {sNums}')

출력


profile
10√2 Data

0개의 댓글