코딩테스트/프로그래머스 입문

[ 프로그래머스 입문 ] LV0 최빈값 구하기

Adose 2025. 6. 12. 00:51

📚 문제 설명

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 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)