[ Lv.0 ] 최빈값 구하기

leeda06·2023년 12월 7일
0

코메미들

목록 보기
28/58
post-thumbnail

문제 설명

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

제한사항

  • (0 < \text{array})의 길이 < 100
  • (0 \leq \text{array})의 원소 < 1000

입출력 예

arrayresult
[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입니다.


내 코드

class Solution {
    public int solution(int[] array) {
        int answer = 0; 
        int[] ary = new int[1001]; 
        //1번FOR문
        for (int i=0; i < array.length; i++){
            ary[array[i]]++;
        }
        
        int max = 0 ;
        int max_index = 0 ;
        
        //2번FOR문
        for (int i = 0; i < ary.length; i++){
            if(ary[i] > max){
                max = ary[i];
                max_index = i;
            }
        }
        
        int count =0;
        //3번FOR문
        for (int i = 0; i < ary.length; i++){
            if(ary[i] == max) count++;
        }
        if(count > 1){ 
            return answer = -1;
        }

        answer = max_index;
        return answer;
    }
}

설명

  • 1번 FOR문 : array[i]의 값에 맞는 any 배열 방에 넣음.
  • 2번 FOR문 : 가장 많이 나온 숫자의 값과 index값을 구함.
  • 3번 FOR문 : 최빈값의 값의 갯수가 몇개인지 확인함.
  • if문 : 최빈값의 갯수가 2개 이상일때의 조건 서식.
  • answer : 최빈값을 가짐

헷깔린 점

  • int[] ary = new int[array.length] : 잘못된 코드임. 나올수 있는 모든 숫자의 크기는 정해져 있는 것을 이용하여 최대 수인 1000에 1을 더해서int[] ary = new int[1001]를 사용함.
profile
웹솔루션과

0개의 댓글