본문 바로가기

카테고리 없음

Int 배열의 최댓값과 최솟값을 한 번에 구하는 방법!

1. 배열의 최댓값과 최솟값을 구하는 필요성

배열은 프로그래밍에서 많이 사용되는 자료구조 중 하나로, 여러 개의 값을 저장하고 관리하는 용도로 사용됩니다. 이때 배열의 요소들 중에서 최댓값과 최솟값을 구하는 것은 매우 중요한 작업입니다. 최댓값과 최솟값을 구함으로써, 주어진 자료에서 가장 큰 값과 작은 값을 찾을 수 있으며, 이를 통해 여러 가지 연산이나 조건 판단을 수행할 수 있습니다.

예를 들어, 배열에 저장된 성적 데이터를 분석하거나, 주식 시장에서 최고가와 최저가를 파악하여 투자 전략을 수립하기 위해서는 최댓값과 최솟값을 구해야 합니다. 또한, 정렬 알고리즘에서도 배열의 최댓값과 최솟값을 기준으로 정렬을 수행하므로, 그 중요성은 더욱 커집니다.

따라서, 배열의 최댓값과 최솟값을 효율적으로 구하는 방법에 대한 이해와 활용은 프로그래밍에서 필수적인 요소로 볼 수 있습니다. 다음 장에서는 배열의 최댓값과 최솟값을 구하는 방법에 대해 알아보겠습니다.

2. 배열의 최댓값과 최솟값을 구하는 방법

배열의 최댓값과 최솟값을 구하는 방법은 다양합니다. 여기에서는 가장 간단하고 일반적으로 사용되는 두 가지 방법을 소개하겠습니다.

2.1. 순차 탐색

순차 탐색은 배열을 앞에서부터 끝까지 탐색하면서 최댓값과 최솟값을 찾는 방식입니다. 배열의 첫 번째 요소부터 마지막 요소까지 순차적으로 비교하여 최댓값과 최솟값을 업데이트하는 방식입니다.

def find_min_max(arr):
    min_val = arr[0]
    max_val = arr[0]

    for i in range(1, len(arr)):
        if arr[i] < min_val:
            min_val = arr[i]
        if arr[i] > max_val:
            max_val = arr[i]

    return min_val, max_val

위 코드에서는 arr 배열의 첫 번째 요소를 초기 최댓값과 최솟값으로 설정한 뒤, 배열의 나머지 요소를 순차 탐색하면서 최솟값과 최댓값을 업데이트합니다. 시간 복잡도는 O(n)이며, 가장 단순하지만 비효율적인 방법입니다.

2.2. 정렬 후 인덱스 접근

배열을 정렬한 뒤, 정렬된 배열의 첫 번째와 마지막 요소는 각각 최솟값과 최댓값입니다. 따라서 배열을 정렬한 뒤, 인덱스 0과 -1에 위치한 요소를 참조하면 최솟값과 최댓값을 구할 수 있습니다.

def find_min_max(arr):
    sorted_arr = sorted(arr)
    min_val = sorted_arr[0]
    max_val = sorted_arr[-1]

    return min_val, max_val

이 방법은 정렬 알고리즘에 따라 시간 복잡도가 달라집니다. 대부분의 정렬 알고리즘은 최소 O(nlogn)의 시간 복잡도를 가지므로, 이 방법의 전체 시간 복잡도는 O(nlogn)입니다. 하지만 정렬된 배열을 사용하기 때문에 인덱스 접근이 가능해 고속으로 최솟값과 최댓값을 구할 수 있습니다.

위 두가지 방법을 사용하여 배열의 최댓값과 최솟값을 구할 수 있습니다. 다음 장에서는 최댓값과 최솟값을 함께 구하는 방법에 대해 알아보겠습니다.

3. 최댓값과 최솟값을 함께 구하는 방법

최댓값과 최솟값을 함께 구하는 방법은 위에서 소개한 방법보다 더 효율적인 방법이 있습니다. 이 방법은 순차 탐색을 수행하는 동안 최솟값과 최댓값을 동시에 업데이트하는 방법입니다. 이렇게 함께 구하는 방법을 사용하면 배열을 한번만 순회하면서 최댓값과 최솟값을 찾을 수 있습니다.

def find_min_max(arr):
    min_val = arr[0]
    max_val = arr[0]

    for i in range(1, len(arr)):
        if arr[i] < min_val:
            min_val = arr[i]
        elif arr[i] > max_val:
            max_val = arr[i]

    return min_val, max_val

위 코드에서는 arr 배열의 첫 번째 요소를 초기 최댓값과 최솟값으로 설정한 뒤, 배열의 나머지 요소를 순차 탐색하면서 최솟값과 최댓값을 업데이트합니다. elif를 사용하여 최솟값보다 작은 경우는 최솟값을 업데이트하고, 최댓값보다 큰 경우에는 최댓값을 업데이트합니다.

이 방법은 순차 탐색을 한 번만 수행하므로 시간 복잡도는 O(n)입니다. 이전에 소개한 방법들과 비교했을 때 가장 효율적인 방법입니다. 따라서 최댓값과 최솟값을 함께 구할 때는 이 방법을 사용하는 것이 좋습니다.

위의 방법들을 활용하여 배열의 최댓값과 최솟값을 구할 수 있습니다. 이를 통해 배열의 요소 중에서 가장 큰 값과 작은 값을 손쉽게 찾을 수 있고, 이를 이용하여 다양한 연산과 조건 판단을 수행할 수 있습니다.