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

'프로그래머스' 카테고리의 다른 글

제곱수 판별  (0) 2023.10.18
숨어있는 숫자의 덧셈  (0) 2023.10.17
자릿수더하기  (0) 2023.10.16
특정문자제거  (0) 2023.10.16
분수의 덧셈  (0) 2023.10.16
Posted by 바르마스
,