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

jmjgirl·2023년 9월 19일
0

프로그래머스

목록 보기
2/47
post-thumbnail

📚 문제 설명

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


🔎 제한사항

  • 0 < array의 길이 < 100
  • 0 ≤ array의 원소 < 1000

🔎 입출력 예


💻 코드

class Solution {
    public int solution(int[] array) {
        int answer = 0;
        int countMax = 0;
        int arrayMax = 0;
    
        
        // 1. 배열의 최대값을 구함
        for (int i=0; i<array.length; i++) {
            if (arrayMax < array[i]) {
                arrayMax = array[i];
            }
        }
        
        int [] arr = new int[arrayMax+1];
        
        // 2. 배열에 들어있는 수에 +1
        for (int j=0; j<array.length; j++) {
            arr[array[j]]++;
        }
        
        // 3. 새로 만든 배열의 최대값을 구함
        for (int k=0; k<arr.length; k++) {
            if (countMax < arr[k]) {
                countMax = arr[k];
                answer = k;
            }
        }
        
        int count = 0;
        // 4. countMax가 여러개인지 확인
        for (int j=0; j<arr.length; j++) {
            if (arr[j]==countMax) {
                count++;
            }
        }
        
        // 5. 만약 1이면 answer을 return, 1보다 크면 최빈값이 여러개이므로 -1 return
        if (count > 1) {
            return -1;
        } else {
        	return answer;
        }
        
    }
}

📖 Solution

새로운 배열을 만들기 위해서 주어진 array의 최대값을 구해줘야한다.
제한 사항에 array 원소에 0이 포함할 수 있다고 했기 때문에 최대값 + 1로 배열의 길이를 설정한다.

그 후 array 배열을 for문으로 돌면서 해당 원소가 포함된 arr 배열에 +1을 해준다. 이때 arr 배열에서 가장 큰 값이 최빈값이 된다.

최빈값을 구했으니 여러개인지 확인해서 만약 여러개라면 -1을 return하고 하나이면 최빈값을 return 한다.

profile
개발자로 가는 👣

0개의 댓글