이 문제의 핵심은 크게 아래와 같이 볼 수 있다.
- 적절한 result 배열의 크기 지정하기
처음 문제를 풀 때 result 선언을 new int[array.length+1];
로 해줬더니 런타임 에러가 떴다.
문제를 다시 읽어보니 array 안의 숫자가 연속적이란 말이 없었다. (아무도 속인 사람이 없지만 나 혼자 속은 기분..) 그래서 result 의 크기를 array 의 원소 범위에 맞춰 선언해 주고 문제를 풀었더니 정답!
class Solution {
public int solution(int[] array) {
// 0 ≤ array의 원소 < 1000
int[] result = new int[1000];
if(array.length == 1) return array[0];
// result 배열의 index에는 array의 정수, vaule에는 해당 정수의 count값을 넣어준다
for(int i = 0; i < array.length; i++) {
result[array[i]] += 1;
}
int max = 0;
int answer = 0;
for(int i = 0; i < result.length; i++) {
if(max < result[i]) {
max = result[i];
answer = i;
} else if(max == result[i]) {
answer = -1;
}
}
return answer;
}
}