728x90
각 정수들의 빈도수를 배열로 나열하려했으나 그냥 보기편하게 하려고 딕셔너리를 사용했다
int[] array= {1,2,3,3,3,4};
int answer = 0;
Dictionary<int, int> arrdic = new Dictionary<int, int>();
if(array.Length > 1)
{
int nvalue = 1;
for (int i = 0; i < array.Length; i++)
{
if (arrdic.ContainsKey(array[i]))
{
arrdic[array[i]] += 1;
}
else
{
arrdic.Add(array[i], nvalue);
}
}
var maxValueKey = arrdic.OrderByDescending(x => x.Value).First().Key;
if (arrdic.Any(x => x.Value == arrdic[maxValueKey] && x.Key != maxValueKey)) answer = -1;
else answer = maxValueKey;
}
else
{
answer = array[0];
}
return answer;
처음으론 배열 길이를 검사하고 1일경우 첫째자리를 리턴한다
다음으론 for문으로 배열을 돌면서 각 정수를 key값으로 지정하여 중복될시 해당 키의 value 값을 +1 해주었다
다음으로 딕셔너리의 value를 내림차순 정렬하고 첫번째로 오는 key를 maxValueKey로 지정한다
최빈값이 여러개인지 검사한다.
딕셔너리에 maxValueKey를 제외하고 최빈값이 같은 value가 있는지 확인, 있으면 -1을 리턴
아니면 그대로 최빈값 도출
예외의 경우도 테스트 해본다
끝
728x90