최댓값 찾기
본문 바로가기
항해 중/알고 보면 알기 쉬운 알고리즘

최댓값 찾기

by 은돌1113 2021. 11. 12.

알고리즘과 친해지기 1 - 최댓값 찾기 문제

: 배열 안에 있는 요소 중에서 최댓값을 찾아 반환하는 문제

 

1) 의사코드(수도코드)

- 최댓값을 담을 변수 => max

- 배열의 요소들을 하나씩 빼온다. => for 반복문

- 값을 비교해서 더 큰 값을 max 변수에 담는다. => if문

- 최댓값을 담은 max 변수의 값을 return 한다.

 

2) 코드 구현

input = [3, 5, 6, 1, 2, 4]

def find_max_num(array):

    # 큰 값을 담을 변수
    max = 0
    # or max = array[0]도 가능하다.

    # 배열에 값들을 하나씩 뽑아온다.
    for num in array:
        # 값을 비교해서 더 큰 값을 변수에 담는다.
        if(max < num):
            max = num

    return max

result = find_max_num(input)
print(result)

 

선생님의 첫번째 풀이 방법

-> 이중 반복문을 사용한다.

input = [3, 5, 6, 1, 2, 4]

def find_max_num(array):

    # 배열에 값들을 하나씩 뽑아온다.
    for num in array:
        # 배열에 값들을 하나씩 뽑아온다.
        for compare_num in array:
            # num과 compare_num을 비교한다.
            if num < compare_num:
                break
                # 안에 있는 for문을 끝낸다.
        else:
            return num

result = find_max_num(input)
print(result)

 

선생님의 두번째 풀이 방법

-> 지정 변수를 사용한다.

input = [3, 5, 6, 1, 2, 4]

def find_max_num(array):

    # 지정 변수를 사용한다.
    max_num = array[0]
    # 초기값 설정

    # 반복문을 돌려서 배열에 요소를 빼온다.
    for num in array:
        # 값을 비교해서 더 큰 값을 max_num에 넣는다.
        if num > max_num:
            max_num = num

    return max_num

result = find_max_num(input)
print(result)

 

내가 생각 했을 때는 둘 중 더 효율적인 방법은 두번째 방법인 것 같다.

이중 for문을 사용하면 같은 값을 뽑아와서 비교하기 때문에 시도 횟수가 한번씩 늘어난다.

그렇기 때문에 지정 변수를 사용해서 초깃값을 정하고 for문을 한번만 사용해서 최댓값을 구하는 게 더 효율적인 것 같다.

'항해 중 > 알고 보면 알기 쉬운 알고리즘' 카테고리의 다른 글

공간 복잡도 판단하기  (0) 2021.11.12
시간 복잡도 판단하기  (0) 2021.11.12
최빈값 찾기  (0) 2021.11.12
알파벳 빈도수 세기  (0) 2021.11.12
알고리즘이란?  (0) 2021.11.12

댓글