[Programmers] 코딩테스트 입문 120812. 최빈값 구하기

이지현·2023년 1월 31일
0

Algorithm

목록 보기
6/81
post-thumbnail

✔️ Problem URL

최빈값 구하기


✔️ Problem

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


✔️ Code (2023.02.01)

Lv.0이 맞는지 의문이 드는 그런 문제다🤯 코드 실행시에는 통과하는데 제출하면 다수의 케이스에서 런타임 에러가 발생한다. 원인이 무엇일까?🧐

class Solution {
    public int solution(int[] array) {
        int[] cnt = new int[100]; // 값별 빈도수 배열에 저장
        int max = Integer.MIN_VALUE;  // 빈도수 중 최대값
        int answer = 0; // 최빈값
        
        for(int i = 0; i < array.length; i++) {
            cnt[array[i]]++;
        }
        for(int i = 0; i < cnt.length; i++) {
            if(cnt[i] > max) {
                max = cnt[i];
                answer = i;
            }
            else if(cnt[i] == max) {
                answer = -1;
            }
        }
        return answer;
    }
}

💡 cnt 배열의 길이를 1000으로 늘렸더니 에러가 해결됐다. 다만 해결된 이유를 모르겠다. 코드를 계속 고찰해봐야할 것 같다.

class Solution {
    public int solution(int[] array) {
        int[] cnt = new int[1000]; // 값별 빈도수 배열에 저장
        int max = Integer.MIN_VALUE;  // 빈도수 중 최대값
        int answer = 0; // 최빈값
        
        for(int i = 0; i < array.length; i++) {
            cnt[array[i]]++;
        }
        for(int i = 0; i < cnt.length; i++) {
            if(cnt[i] > max) {
                max = cnt[i];
                answer = i;
            }
            else if(cnt[i] == max) {
                answer = -1;
            }
        }
        return answer;
    }
}

✔️ Code (2023.02.04)

profile
2023.09 ~ 티스토리 이전 / 2024.04 ~ 깃허브 블로그 이전

0개의 댓글