파일 업로드

최댓값과 최솟값 찾기

profile
첨부파일
첨부된 파일이 없습니다.

파이썬에서 최대값과 최소값을 찾는 다양한 방법을 알아볼까요?

 

1. 반복문을 사용한 방법 (for 또는 while 문 활용)

먼저 반복문을 사용하여 최대값과 최소값을 찾는 방법이 있습니다. 

중요한 부분은 최대나 최소값을 비교할 때 활용할 "변수의 초기 값"을 어떻게 설정하는가? 가 중요한데요.

대표적인 방법으로는 배열의 첫 번째 원소를 활용하는 방법이 있습니다.

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

# 리스트가 비어 있지 않다고 가정합니다.
max_value = numbers[0]
min_value = numbers[0]

for number in numbers:
    if number > max_value:
        max_value = number
    if number < min_value:
        min_value = number

print("최대값은:", max_value)
print("최소값은:", min_value)

이 방법에서는 리스트의 첫 번째 요소를 초기 최대값과 최소값으로 설정한 다음, 리스트의 모든 요소를 순회하면서 현재 최대값보다 큰 값을 찾으면 최대값을 갱신하고, 현재 최소값보다 작은 값을 찾으면 최소값을 갱신합니다.

 

또 다른 방법으로는 MIN 값에는 +∞, MAX 값에는 -∞ 을 활용하는 방법인데요

컴퓨터에서 의미하는 -∞ 과 +∞ 은 무엇을 의미할까요?

변수에 저장할 수 있는 가장 큰 수를 이 의미로 해석하여 사용할 수 있습니다.

import sys

MAX_INT = sys.maxsize
print(MAX_INT)
import sys

MAX_INT = sys.maxsize # +∞
MIN_INT = -MAX_INT # -∞
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

# 리스트가 비어 있지 않다고 가정합니다.
max_value = MIN_INT # -∞
min_value = MAX_INT # +∞

for number in numbers:
    if number > max_value:
        max_value = number
    if number < min_value:
        min_value = number

print("최대값은:", max_value)
print("최소값은:", min_value)

그렇다고 꼭 sys.maxsize 를 사용하지 않고 데이터에서 가장 큰 값 또는 가장 작은 값을 활용해도 되겠죠? (ex) 999999999..)

 

 

2. max() 및 min() 함수 사용

파이썬에는 리스트나 다른 iterable의 최대값과 최소값을 찾기 위해 내장 함수 max()와 min()을 사용할 수 있습니다. 

이 방법은 가장 간단하고 직관적이에요.

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

max_value = max(numbers)
min_value = min(numbers)

print("최대값은:", max_value)
print("최소값은:", min_value)

위 코드에서는 max() 함수와 min() 함수가 리스트 numbers의 최대값과 최소값을 각각 반환합니다.

 

3. Numpy 라이브러리 사용

많은 데이터 처리를 할 때는 Numpy 라이브러리를 사용하는 것이 유리합니다. Numpy는 고성능 수치 계산을 위한 파이썬 라이브러리로, 대규모 배열 및 행렬 연산에 최적화되어 있습니다.

import numpy as np

numbers = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5])

max_value = np.max(numbers)
min_value = np.min(numbers)

print("최대값은:", max_value)
print("최소값은:", min_value)

np.max()와 np.min() 함수를 사용하여 Numpy 배열의 최대값과 최소값을 쉽게 찾을 수 있습니다.

 

 

4. (번외) 재귀 함수를 사용한 방법

재귀 함수를 사용하여 최대값과 최소값을 찾는 방법도 있습니다. 이 방법은 리스트를 분할하여 각 부분의 최대값과 최소값을 찾고, 이를 병합하여 전체 리스트의 최대값과 최소값을 찾습니다.

def find_max(lst):
    if len(lst) == 1:
        return lst[0]
    else:
        mid = len(lst) // 2
        left_max = find_max(lst[:mid])
        right_max = find_max(lst[mid:])
        return left_max if left_max > right_max else right_max

def find_min(lst):
    if len(lst) == 1:
        return lst[0]
    else:
        mid = len(lst) // 2
        left_min = find_min(lst[:mid])
        right_min = find_min(lst[mid:])
        return left_min if left_min < right_min else right_min

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

max_value = find_max(numbers)
min_value = find_min(numbers)

print("최대값은:", max_value)
print("최소값은:", min_value)

재귀 함수를 사용한 방법은 리스트를 작은 부분으로 나누고, 각 부분에서 최대값과 최소값을 찾은 후, 최종적으로 이를 비교하여 반환합니다.

 

요약

파이썬에서 최대값과 최소값을 찾는 방법에는 반복문을 사용하는 방법, max() 및 min() 함수를 사용하는 방법, Numpy 라이브러리를 사용하는 방법, 그리고 재귀 함수를 사용하는 방법 등 다양하게 구현할 수 있습니다. 

상황에 따라 적절하게 선택하여 사용해보세요!