최빈값 구하기
문제 #
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array
가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
제한사항 #
- 0 <
array
의 길이 < 100 - 0 ≤
array
의 원소 < 1000
나의 풀이 #
class Solution {
public int solution(int[] array) {
int answer = 0;
int[] count = new int[1001];
int maxcnt = -2;
for (int i=0; i<array.length; i++){
count[array[i]]++;
}
for (int j=0; j<count.length; j++){
if(maxcnt < count[j]) {
maxcnt = count[j]; //최대카운트 횟수에 j의 카운트횟수 대입
answer = j; //j는 최빈값
}
else if(maxcnt==count[j]){ //횟수가 같은값이 있을경우
answer = -1;
}
}
return answer;
}
}
다른 사람의 풀이 #
import java.util.*;
class Solution {
public int solution(int[] array) {
int maxCount = 0;
int answer = 0;
Map<Integer, Integer> map = new HashMap<>();
for(int number : array) {
int count = map.getOrDefault(number, 0) + 1;
if(count > maxCount) {
maxCount = count;
answer = number;
}
else if(count == maxCount) {
answer = -1;
}
map.put(number, count);
}
return answer;
}
}
관련개념 학습 #
getOrDefault : 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드 getPrDefault(Object key, V DefaultValue)
- 매개변수 : 이 메서드는 두개의 매개변수를 허용
- key : 값을 가져와야 하는 요소의 키
- defaultValue : 지정된 키로 매핑된 값이 없는 경우 반환되어야 하는 기본값
- 반환값 : 찾는 key가 존재하면 해당 key에 매핑되어 있는 값을 반환하고, 그렇지 않으면 디폴트 값이 반환