코딩 초보인 나에겐 푸는데 시간이 굉장히 오래걸린 문제다.
배열의 최빈값을 배열로 받아오는 아이디어를 생각해 내는데 많은 시간을 갉아먹었지만, 아이디어를 생각해 낸 이후로는 금방 풀리는 문제였다.
for(int i = 0; i<array.length; i++) {
arr[array[i]]++;
}
주어진 배열의 길이만큼 새로운 배열을 생성하고, 주어진 배열의 값 x가 불릴때마다 arr
배열의 x 행의 값을 ++ 해준다.
for(int i = 0; i<arr.length; i++) {
if(arr[i]>max) {
max = arr[i];
x = i;
}
}
위 arr
for문으로 array
에서 최빈값 x와 최빈값의 불린 횟수 max 를 구해줄 수 있다.
마지막으로, 최빈값이 여러개면 -1을 return 해주도록 코드를 작성해주면 된다.
for(int i = 0; i<arr.length; i++) {
if(arr[i] == max) {
count++;
}
}
if(count>1) {
answer = -1;
} else answer = x;
return answer;
위의 for문으로 최빈값이 겹칠 경우 count값을 ++ 해주고, 아래의 if문으로 count>1 일 경우 answer 는 -1 을 return 해준다.