[C#] 최빈값 구하기

Connected Brain·2025년 8월 18일
0

코딩 테스트

목록 보기
55/67

최빈값 구하기

문제 설명

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다.
정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록
solution 함수를 완성해보세요.
최빈값이 여러 개면 -1을 return 합니다.

풀이

public class ModeFinder
{
    public static int Solution(int[] array)
    {
        Dictionary<int, int> modes = new Dictionary<int, int>();
        
        foreach (var value in array)
        {
            if (!modes.TryAdd(value, 1))
                modes[value]++;
        }
        
        int maxValue = modes.Values.Max();
        
        int[] result = modes.Where(pair => pair.Value == maxValue)
        .Select(pair => pair.Key).ToArray();
        
        if (result.Length > 1)
            return -1;
        
        return result.First();
    }
}

Dictionary 활용

  • 전체 배열에서 각각의 값들이 몇번 나왔는지 확인할 수 있도록 Dictionary<int, int>를 통해 관리할 수 있도록 하였다.
  • 이후 해당 빈도 값 중에서 가장 큰 값을 찾아 maxValue에 저장
  • maxValue와 같은 빈도를 가지는 Key를 배열로 반환

예외 처리

  • 결과를 추출했을 때 2개 이상의 값을 가질 경우 -1을 반환
  • 하나일 경우 결과를 반환

0개의 댓글