코딩테스트 입문 - 최빈값 구하기(C#)
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;
}
}