[알고리즘 기초] 최빈값

서대철·2023년 7월 25일
1

다음은 숫자 리스트의 최빈값(mode)을 찾는 간단한 알고리즘입니다. 우리는 각 숫자의 등장 횟수를 세는 방식으로 최빈값을 찾을 수 있습니다.

아래는 숫자 리스트의 최빈값을 찾기 위한 알고리즘입니다:

  1. 빈 딕셔너리를 생성하여 각 숫자의 등장 횟수를 저장합니다.
  2. 숫자 리스트를 순회합니다.
  3. 각 숫자에 대해 딕셔너리에 이미 키로 존재하는지 확인합니다:
    a. 만약 존재한다면 해당 숫자의 등장 횟수를 1 증가시킵니다.
    b. 존재하지 않는다면 해당 숫자를 딕셔너리에 추가하고 등장 횟수를 1로 설정합니다.
  4. 각 숫자의 등장 횟수를 세는 작업이 끝나면, 최빈값(가장 자주 등장한 값)을 찾습니다.
    a. 만약 최빈값이 유일하다면 해당 숫자를 반환합니다.
    b. 최빈값이 여러 개라면 모든 최빈값을 담은 리스트를 반환합니다.

Python으로 이 알고리즘을 구현해 보겠습니다:

def find_mode(numbers):
    if not numbers:
        return None  # Return None for an empty list

    # Create a dictionary to store the counts of each number
    count_dict = {}

    # Count the occurrences of each number
    for num in numbers:
        count_dict[num] = count_dict.get(num, 0) + 1

    # Find the highest count (the mode)
    max_count = max(count_dict.values())

    # Find elements with the highest count (modes)
    modes = [num for num, count in count_dict.items() if count == max_count]

    if len(modes) == 1:
        return modes[0]  # Return the mode if it's unique
    else:
        return modes  # Return a list of modes if there are multiple modes

# Example usage:
numbers = [10, 25, 5, 30, 15, 25, 10, 25]
mode_result = find_mode(numbers)
print("Mode:", mode_result)

예시 사용법에서 숫자들 리스트 [10, 25, 5, 30, 15, 25, 10, 25]를 입력으로 주었을 때, 출력은 다음과 같을 것입니다:

최빈값: [25]

이 경우, 숫자 25가 가장 자주 등장하여 최빈값으로 반환됩니다. 함수는 유일한 최빈값이 하나만 있는 경우에는 해당 숫자를 반환하고, 여러 개의 최빈값이 있는 경우에는 모든 최빈값들을 담은 리스트를 반환합니다.

0개의 댓글