오늘이라도
[4일차][프로그래머스, 120812번, Lv. 0] 최빈값 구하기 본문
반응형
문제
내 풀이
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.util.HashMap;
import java.util.Comparator;
class Solution {
public int solution(int[] array) {
int answer = 0;
int[] tempArray = Arrays.stream(array).distinct().toArray();
Map<Integer, Integer> tempMap = new HashMap<>();
for(int i : tempArray) {
int count = 0;
for(int j : array) {
if(i == j) { count++; }
}
tempMap.put(i, count);
}
List<Integer> valueList = new ArrayList<>(tempMap.values());
valueList.sort(Comparator.reverseOrder());
int max = valueList.get(0);
if(valueList.size() > 1 && max == valueList.get(1)) {
answer = -1;
} else {
for(Map.Entry<Integer, Integer> element : tempMap.entrySet()) {
if(element.getValue() == max) {
answer = element.getKey();
break;
}
}
}
return answer;
}
}
채점 결과
피드백
list.sort()
map.entrySet()
map.values()
Arrays.stream(arr).distinct()
활용해 풀었다
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;
}
}
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public int solution(int[] array) {
List<Map.Entry<Integer, List<Integer>>> list = new ArrayList<>(Arrays.stream(array).boxed().collect(Collectors.groupingBy(o -> o)).entrySet()).stream().sorted((t0, t1) -> Integer.compare(t1.getValue().size(), t0.getValue().size())).collect(Collectors.toList());
return list.size() > 1 && list.get(0).getValue().size() - list.get(1).getValue().size() == 0 ? -1 : list.get(0).getKey();
}
}
이런 방법들도 있더라
반응형
'개발 공부 > 코딩테스트' 카테고리의 다른 글
[4일차][프로그래머스, 120814번, Lv. 0] 피자 나눠먹기 (1) (0) | 2022.12.20 |
---|---|
[4일차][프로그래머스, 120813번, Lv. 0] 짝수는 싫어요 (0) | 2022.12.20 |
[3일차][프로그래머스, 12928번, Lv. 1] 약수의 합 (0) | 2022.12.20 |
[3일차][프로그래머스, 120811번, Lv. 0] 중앙값 구하기 (0) | 2022.12.20 |
[3일차][프로그래머스, 120810번, Lv. 0] 나머지 구하기 (0) | 2022.12.20 |