오늘이라도

[4일차][프로그래머스, 120812번, Lv. 0] 최빈값 구하기 본문

개발 공부/코딩테스트

[4일차][프로그래머스, 120812번, Lv. 0] 최빈값 구하기

upcake_ 2022. 12. 20. 16:26
반응형

문제

내 풀이

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();
    }
}

 

이런 방법들도 있더라

반응형