📚 문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
💻 구현 코드
import java.util.HashMap;
import java.util.Map;
class Solution {
public static int solution(int[] array) {
Map<Integer, Integer> numberList = new HashMap<>();
int result = -1;
int maxData = -1;
for(int data : array){
if(numberList.containsKey(data)){
numberList.put(data,numberList.get(data)+1);
continue;
}
numberList.put(data,1);
}
for(Map.Entry<Integer, Integer> data : numberList.entrySet()){
int key = data.getKey();
int value = data.getValue();
if(value>maxData){
maxData = value;
result = key;
}else if(value == maxData){
result = -1;
}
}
return result ;
}
}
📌 구현코드 해설
1. map을 사용하여, key value를 사용하여 각 값에 대한 빈도수를 저장하였다.
2. for - each문을 사용하여, 최빈값을 계산하고 해당되는 key값을 result에 저장하였다.
3. 만약 최빈값과 같은 값이 하나 더 있다면, result에 -1이 저장되도록 하였다.
🍏 회고 / 새롭게 알게 된 점
- for-each 문에서 Map을 순회할 때는 Map.Entry를 사용해야 한다는 것을 새롭게 알게 되었다.
- 또한, Map.entrySet()을 사용하면 Map의 각 key-value 쌍을 하나씩 포함한 Set을 얻을 수 있다는 점도 알게 되었다.
- 까먹고 있었는데,,, Map에는 getOrDefault를 사용하는 방법이 있었따.. ^,^ 제발 기억하자
getOrDefault(number, 0)
'코딩테스트 > 프로그래머스 입문' 카테고리의 다른 글
[ 프로그래머스 입문 ] LV0 피자 나눠먹기 1, 2, 3 (1) | 2025.06.12 |
---|---|
[ 프로그래머스 입문 ] LV0. 짝수는 싫어요 (0) | 2025.06.12 |
[ 프로그래머스 입문 ] LV0 중앙값 구하기 (0) | 2025.06.11 |
[ 프로그래머스 입문 ] LV0. 배열 두배 만들기 (0) | 2025.06.11 |
[ 프로그래머스 입문 ] LV0. 분수의 덧셈 (0) | 2025.06.11 |