본문 바로가기

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

[프로그래머스][JAVA] 최빈값 구하기 (LV.0)

반응형

 문제 설명

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.

 

 제한사항

• 0 < array의 길이 < 100
• 0 ≤ array의 원소 < 1000

 

 입출력 예

my_string result
[1, 2, 3, 3, 3, 4] 3
[1, 1, 2, 2] -1
[1] 1

 

※ 입출력 예 설명

입출력 예 #1

     • [1, 2, 3, 3, 3, 4]에서 1은 1개 2는 1개 3은 3개 4는 1개로 최빈값은 3입니다.

입출력 예 #2

     • [1, 1, 2, 2]에서 1은 2개 2는 2개로 최빈값이 1, 2입니다. 최빈값이 여러 개이므로 -1을 return 합니다.

입출력 예 #3

     • [1]에는 1만 있으므로 최빈값은 1입니다.

 


나의 풀이
import java.util.Arrays;

class Solution {
    public int solution(int[] array) {
        int answer = 0;
        int idx = 0;
        int cnt = 0;
        int[] t = new int[1];
        t[0] = 0;
        
        Arrays.sort(array);
        
        for(int i=0; i<=array[array.length-1]; i++) {
            for(int j=0; j<array.length; j++) {
                if(i == array[j]) {
                    cnt++;
                }
            }
            if(t[0] < cnt) {
                t[0] = cnt;
                answer = i;
            } else if(t[0] == cnt) {
                t[0] = cnt;
                answer = -1;
            }
            cnt = 0;
        }
        
        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;
    }
}
728x90
반응형