IT/C#

코딩테스트 입문 - 최빈값 구하기(C#)

Tommy 2023. 3. 15. 08:54
728x90

using System;


public class Solution {
    public int solution(int[] array) {
        int answer = 0;
        int maxArr = 0;
        
        // 배열 안에서 가장 큰 수 찾기
        for(int i = 0 ; i < array.Length ; i++){
            if(array[i] > maxArr){
                maxArr = array[i];
            }
        }
        
        int[] count = new int[maxArr + 1];
        int max = 0;
        int numCheck = 0;
        
        // 카운트 배열에 array 가 속한 숫자가 있으면 카운트 ++
        for(int i = 0 ;  i < array.Length ; i++){
            count[array[i]]++;
        }
        
        // 각 숫자마다 카운트를 비교 후 가장 높은 카운트를 가진 수를 max에 입력
        for(int i = 0 ; i < count.Length; i++){
            if(count[i] > max){
                max = count[i];
                answer = i;
            }
        }
        
        // 가장 높은 카운트를 가진 수가 여러개 있는 경우 numCheck 값을 ++ 하여
        for(int i = 0 ; i < count.Length ; i++){
            if(count[i] == max){
                numCheck++;
            }
        }
        // numCheck 값이 1보다 크면 동일한 높은 카운트를 가진 수가 있다는 뜻이므로, -1 을 출력
        if(numCheck > 1){
            answer = -1;
        }
        
        
        return answer;
    }
}