[Programmers/코딩테스트 연습] 최빈값 구하기 java

2022. 11. 26. 11:59IT/Programmers

728x90
반응형

Java에서는 배열 내에 특정 값이 몇 개 있는지 바로 찾을 수 있는 함수가 없다고 한다.

대신 배열 Array를 List로 바꿔서

  • Collections.frequency(list, "찾는 값")

을 이용하면 배열 내의 특정 원소 개수를 구할 수 있다.

 

하지만 import java.util.ArrayList가 안되는 것 같아서 for문을 이용하기로 했다.

 

최빈값 구하기 Java 

class Solution {
    public int solution(int[] array) {
        int answer = 0;
        int[] count = new int[1000]; //문제 조건: 0 <= 원소크기 < 1000
        int max = 0;
        
        for (int i = 0; i < array.length; i++) {
            count[array[i]]++;
        }
        for (int j = 0; j < count.length; j++) {
            if(count[j] > max) {
                answer = j;
                max = count[j];
            } else if (count[j] == max) {
                answer = -1;
            }
        }
        return answer;
    }
}

자꾸 런타임 에러가 발생해서 뭐가 문제일까 생각했는데, 

1) count 생성 시 크기를 array.length로 지정 (불확정적이다)

2) count 생성 시 크기를 999로 지정 (작다)

3) answer = j를 for문 밖에 작성 (해제된 변수 사용)

이런 멍청한 짓을 하고 나서야 성공했다. .. ㅎ

728x90
반응형