파이썬 함수 작성 시 return이 작동하지 않습니다.

조회수 1318회

파이썬을 이용하여 알고리즘을 공부하는 중입니다.

정렬되지 않은 리스트에서 i번째로 작은 원소가 무엇인지 search 하는 알고리즘을 작성하였으나 return이 되지 않는 문제가 발생하더라구요.

return이 if문 안에 있기 때문에 그런거 같은데 이유가 뭔지, 어떻게 해결하면 좋을지 궁금합니다.
답변 부탁드립니다.

def sol_select(lst, i):
    lst.sort()
    return lst[i]
def partition(lst):
    changed_lst = []
    comparison_element = lst[len(lst)-1]
    changed_lst.append(comparison_element)
    comparison_idx = 0
    for i in range(len(lst)-1):
        element = lst[i]
        if comparison_element > element:
            changed_lst.insert(0, element)
            comparison_idx += 1
        else:
            changed_lst.append(element)
    return changed_lst, comparison_idx


def select(lst, i):
    if len(lst) <= 1:
        print(lst[0])
        return lst[0]
    changed_lst, comparison_idx = partition(lst)
    # print('i:', i, 'lst:',lst ,'changed_lst:', changed_lst,'comparison_idx:' , comparison_idx)
    if i < comparison_idx:
        select(changed_lst[:comparison_idx], i)
    elif i > comparison_idx:
        select(changed_lst[comparison_idx+1:], i-comparison_idx-1)
    elif i == comparison_idx:
        print(changed_lst[i])
        return changed_lst[i]
# 입력할 리스트
import numpy as np
list(np.random.randint(1, 100 + 1, 10))
  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)