• 최댓값, 최솟값 찾기 & 최댓값 위치 구하기

    2021. 7. 8.

    by. Jacob Lee

    728x90

     


     

    최댓값, 최솟값 찾기

    의사코드(pseudocode)로 알고리즘을 설계해보면 다음과 같이 생각해볼 수 있다.

    (17, 92, 18, 33, 58, 7, 33, 42 중에서 찾는다고 가정)

     

    • 첫 번째 숫자 17을 최댓값으로 기억
    • 두 번째 숫자 92를 현재 최댓값과 비교하고, 비교했을 때 92가 더 크므로 더 큰 수(92)를 저장
    • 세 번째 숫자 18을 현재 최댓값 92와 비교, 더 작으므로 그냥 지나감
    • 네 번째 숫자부터 일곱 번째 숫자까지 같은 과정을 반복
    • 마지막 숫자 42를 현재 최대값인 92와 비교, 42가 더 작으므로 지나감
    • 결국 92가 주어진 숫자 중 최대 값

     

    최댓값 찾기

    def find_max(a):
        # 입력크기 n
        n = len(a)
        # 리스트의 첫 번째 값을 최대값으로 기억
        max_v = a[0]
        # 1부터 n-1까지 반복
        for i in range(1, n):
            # 이번 값이 현재까지 기억된 최대값보다 크면
            if a[i] > max_v:
                # 최댓값을 변경
                max_v = a[i]
        return max_v
            
    
    v = [17, 92, 18, 33, 58, 7, 33, 42]
    print(find_max(v))
    
    # 실행 결과
    92

     

    최솟값 찾기

    def find_min(a):
        # 입력 크기 n
        n = len(a)
        # 리스트 중 첫 번째 값을 일단 최솟값으로 기억
        min_v = a[0]
        # 1부터 n-1까지 반복
        for i in range(1, n):
            # 이번 값이 현재까지 기억된 최솟값보다 작으면
            if a[i] < min_v:
                # 최솟값을 변경
                min_v = a[i]
        return min_v
    
    
    v = [17, 92, 18, 33, 58, 7, 33, 42]
    print(find_min(v))
    
    # 실행 결과
    7

     

    최댓값 위치 구하기

    이번에는 최댓값의 위치를 구해보자.

    def find_max_idx(a):
        # 입력크기 n
        n = len(a)
        # 리스트 중 0번 위치를 최대값 위치로 기억
        max_idx = 0
        # 1부터 n-1까지 반복
        for i in range(1, n):
            # 이번 값이 현재까지 기억된 최대값보다 크면
            if a[i] > a[max_idx]:
                # 최댓값 위치를 변경
                max_idx = i
        return max_idx
    
    
    v = [17, 92, 18, 33, 58, 7, 33, 42]
    print(find_max_idx(v))
    
    # 실행 결과
    1

     

    Reference

     

    728x90

    'Developer > Algorithm' 카테고리의 다른 글

    1부터 n까지 제곱의 합  (0) 2021.07.06
    1부터 n까지 연속한 숫자의 합  (0) 2021.07.06
    절대값 구하기  (0) 2021.07.06

    댓글