Deep_Dev
article thumbnail

문제 설명

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

 
제한사항
  • 0 < array의 길이 < 100
  • 0 ≤ array의 원소 < 1000

 

 

입출력 예arrayresult
[1, 2, 3, 3, 3, 4] 3
[1, 1, 2, 2] -1
[1] 1

 

 

 

 


예외테스트 몇개가 자꾸 오답이어서, 다른 분 코드를 조금 참고해서 풀었다.

내일 다시 풀어보기로 

 

 

public class Solution {
    public int solution(int[] array) {
        int answer = 0;
        int arr_max = 0;

        //array의 가장 큰 값을 기준으로
        for (int i = 0; i < array.length; i++) {
            if (array[i] > arr_max) {
                arr_max = array[i]; 
            }
        }

        // 그만큼 index배열 생성 ( array의 원소값을 index배열의 index로 쓰는것임 )
        int[] index = new int[arr_max + 1]; //
        int max = 0;
        int cnt = 0;

        // array의 해당 원소를 index배열의 index값을 증가시켜 최빈값 계산
        for (int i = 0; i < array.length; i++) {
            index[array[i]]++;
        }

        // index배열의 해당 값이 max보다 크면 가장 최빈값
        for (int i = 0; i < index.length; i++) {
            if (index[i] > max) {
                max = index[i];
                answer = i; // 최빈 값을 answer로
            }
        }
        // 최빈 값이 여러개 일때
        for (int i = 0; i < index.length; i++) {
            if (index[i] == max) {
                cnt++;
            }
        }
        if (cnt > 1) answer = -1;
        return answer;
    }
}