개발기초

알고리즘 : 파이썬 기본 예제, 리스트 안의 최댓값 찾아보기

Veams 2022. 11. 22.

다음의 코드를 기초로 최댓값을 찾아보는 알고리즘 작성해보기

input = [4, 7, 5, 3, 2, 8]

def find_max_num(array):
    # 이 부분에 알고리즘을 채워보자!
    return ?

result = find_max_num(input)
print(result)

우리는 직관적으로 8이 리스트 안에서 가장 큰 값이라는 생각이 들지만,

컴퓨터가 직접 어떤 규칙에 따라 최댓값을 찾아 볼 수 있도록 명령어를 입력해줘야 한다.

 

한 번 직접 코드를 작성해보고 다음 해답을 살펴보자

 

 

기본적으로 비교할 변수를 설정해줬다.

 

첫 번째 방식 : 두 변수를 설정하고, 한 변수가 항상 값이 컸을 때만 반환하기

- 작성할 함수에는 for문을 활용하는데, num과 compar_num 두 개 변수 설정하였고, 변수 num은 compare_num과 비교하면서 최댓값을 찾을 수 있도록하였다. 만약 리스트의 각 요소에 num이 대입하는 동안 num이 compare_num 보다 계속 컸다면(즉, 최댓값) 마지막에 num을 반환한다. 

input = [4, 7, 5, 3, 2, 8]

def find_max_num(array):
    for num in array:
        for compare_num in array:
            if num < compare_num:
                break
        else:
            return num

result = find_max_num(input)
print(result)

실행결과 ==> 8

 

 

두 번째 방식 : 최댓값을 찾았을 때 그 값을 저장하기

- 이번에는 num과 max_num을 변수로 설정하였다. 대신 첫 번째와 달리, for문 내에서 max_num의 초기값을 배열의 첫번째 요소(=array[0])로 먼저 설정하였다. 결국 찾으려는 값은 max_num이다. 만약 num에 리스트의 각 요소를 대입해보면서 num이 max_num의 값보다 크다면 그 값을 max_num의 값으로 저장하게 했다. 값이 적었다면, 다시 값을 비교하며 더 큰 값을 찾을 때까지 반복했을 것이다. 

input = [4, 7, 5, 3, 2, 8]

def find_max_num(array):
    max_num = array[0]
    for num in array:
        if num > max_num:
            max_num = num
    return max_num

result = find_max_num(input)
print(result)

실행결과 ==> 8

댓글