최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
Lv.0이 맞는지 의문이 드는 그런 문제다🤯 코드 실행시에는 통과하는데 제출하면 다수의 케이스에서 런타임 에러
가 발생한다. 원인이 무엇일까?🧐
class Solution {
public int solution(int[] array) {
int[] cnt = new int[100]; // 값별 빈도수 배열에 저장
int max = Integer.MIN_VALUE; // 빈도수 중 최대값
int answer = 0; // 최빈값
for(int i = 0; i < array.length; i++) {
cnt[array[i]]++;
}
for(int i = 0; i < cnt.length; i++) {
if(cnt[i] > max) {
max = cnt[i];
answer = i;
}
else if(cnt[i] == max) {
answer = -1;
}
}
return answer;
}
}
💡 cnt 배열의 길이를 1000으로 늘렸더니 에러가 해결됐다. 다만 해결된 이유를 모르겠다. 코드를 계속 고찰해봐야할 것 같다.
class Solution {
public int solution(int[] array) {
int[] cnt = new int[1000]; // 값별 빈도수 배열에 저장
int max = Integer.MIN_VALUE; // 빈도수 중 최대값
int answer = 0; // 최빈값
for(int i = 0; i < array.length; i++) {
cnt[array[i]]++;
}
for(int i = 0; i < cnt.length; i++) {
if(cnt[i] > max) {
max = cnt[i];
answer = i;
}
else if(cnt[i] == max) {
answer = -1;
}
}
return answer;
}
}