[프로그래머스] 최빈값 구하기 (JAVA)

·2023년 1월 16일
0

프로그래머스

목록 보기
19/59

📌 문제 설명

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 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

📌 코드

class Solution {
    public int solution(int[] array) {
      int answer = 0, maxCount = 0;
        int []count = new int[1000];
        for(int i = 0; i < array.length; i++){
           count[array[i]]++;
        }
        for(int i = 0; i < count.length; i++){
            if(maxCount < count[i]){
                answer = i;
                maxCount = count[i];
            }
        }
        for(int i = 0; i < count.length; i++){
            if(maxCount == count[i] && answer != i)
                answer = -1;
        }
        return answer;
    }
}

📌 문제 해결 과정

💡 array 원소의 빈도를 기록할 count 배열을 만들어 주고, array의 길이만큼 반복문을 돌리는데, 만약 array[i]가 3이라면 count 배열의 3번째 인덱스에 +1을 해 주는 형식으로 빈도수를 저장해 주었다

💡 이후 count의 길이만큼 반복문을 돌리며 최빈값의 빈도를 찾을 때마다 빈도는 maxCount에 넣어 주고, 최빈값은 answer에 넣어 주게 된다 최빈값이 여러 개가 아니라면 바로 answer을 리턴 하게 되겠지만, 만약에 count 배열에 maxCount에 담긴 값과 같지만 answer에 담긴 값은 다르다면, 즉 최빈값의 빈도는 같지만 최빈값은 다르다면 answer에 -1을 넣어 리턴 하게 해 준다

profile
공부는 많은 양을 하진 않더라도 꾸준히 매일 하기

0개의 댓글