Python

[Python] 재귀함수를 이용한 리스트 최대, 최소 값 찾기

왕초보코딩러 2023. 9. 16. 01:15
728x90

 

리스트에서 가장 큰 값 구하기

 

하위 문제: 리스트의 마지막 값 제외 나머지의 최댓값을 구함 -> 그 값과 리스트의 마지막 값과 비교
베이스 케이스: 리스트의 길이가 1 이하일 때 len(arr) <= 1
재귀 케이스: 리스트의 길이가 2 이상일 때

def maxReturn(arr):
    if len(arr) <= 1:
        return arr[0]
    if maxReturn(arr[:-1]) < arr[-1]:
        return arr[-1] 
    else :
        return maxReturn(arr[:-1])

 

 


+리스트에서 가장 작은 값 리턴

 

하위 문제: 리스트의 마지막 값 제외 나머지의 최솟값을 구함 -> 그 값과 리스트의 마지막 값과 비교
베이스 케이스: 리스트의 길이가 1개 이하일 때 len(arr) <= 1
재귀 케이스: 리스트의 길이가 2개 이상일 때

def minReturn(arr):
    if len(arr) <= 1:
        return arr[0]
    if minReturn(arr[:-1]) > arr[-1]:
        return arr[-1] 
    else :
        return minReturn(arr[:-1])

 

 


테스트를 위한 리스트 생성

random함수의 randint를 사용하여 랜덤으로 값을 생성하여 리스트에 추가해보겠습니다.

//randint 함수만 불러오기
from random import randint

//빈 리스트 생성
rand_arr = []

//-10부터 10 사이의 정수를 가진 6개의 값을 가진 리스트 만들기
for i in range(6):
    num = randint(-10, 10)
    rand_arr.append(num)
//리스트 출력
print(rand_arr)
//최댓값 출력
print(f"최댓값: {maxReturn(rand_arr)}")
//최솟값 출력
print(f"최솟값: {minReturn(rand_arr)}")

 

출력>

[4, 9, -6, 2, 3, 3]
최댓값: 9
최솟값: -6

랜덤 함수를 사용했기 때문에 리스트의 값은 항상 달라집니다!

'Python' 카테고리의 다른 글

Python에서 엑셀, csv 다루기  (1) 2024.01.13
웹 스크래핑  (1) 2024.01.13
알고리즘 패러다임  (0) 2023.11.18
[Python] 코드잇 숫자 맞히기 게임  (0) 2023.09.18
[Python] 1부터 n까지 원하는 값의 개수 찾기  (0) 2023.05.25