JAVAIARY

최빈값 알고리즘 본문

selfEdu/concept

최빈값 알고리즘

shiherlis 2022. 9. 11. 16:12

* 인덱스(0점~8점)의 개수(COUNT)의 최대값(MAX)

핵심: 점수를 인덱스로 보고 인덱스(점수)가 같을 때 마다 인덱스에 1을 더해준다.


기본 선언

        int[] scores = {1,2, 3, 5, 4, 3, 3 ,8, 3, 3,7}; // 0~8까지만 들어온다고 가정
        int mode = 0;                         // 최빈값이 담길 그릇
        int[] indexes = new int[scores.length+1]; // 0~8점까지: 점수의 인덱스의 카운터
                                                // 0부터 시작하기 때문에 +1 해줌
        int max = Integer.MIN_VALUE;            // 정수 중 가장 작은 수로 초기화

최빈값 알고리즘 

 - 기본 선언을 가지고 답을 보기 전에 미리 짜본 코드

        for(int i =0; i < scores.length; i++){
            int j = scores[i];
            indexes[j] += 1;
        }
        for(int i = 0; i < indexes.length; i++){
            if (indexes[i] > max) {
                max = indexes[i];
                mode = i;
            }
        }

- 풀이

        for (int i = 0; i < scores.length; i++) {
            indexes[scores[i]]++;               //COUNT
        }
        for (int i = 0; i < indexes.length; i++) {
            if (indexes[i] > max) {
                max = indexes[i];               // MAX
                mode = i;                       // MODE
            }
        }

 

 - 같은 로직이지만 풀이가 훨씬 코드가 짧고 간결하다.


출력

//1 빈도수를 max로 출력
System.out.println("최빈값 : " + mode + ", 빈도 수 : " + max);
//2 빈도수를 indexes[mode]로 출력
System.out.println("최빈값 : " + mode + ", 빈도 수 : " + indexes[mode]);
//3	idexces[] 배열 확인
System.out.println(Arrays.toString(indexes));

'selfEdu > concept' 카테고리의 다른 글

next() 와 nextLine()  (0) 2022.10.10