[Coding] 최빈값 구하기

Jason·2024년 1월 17일
0

Coding problems

목록 보기
1/7
post-thumbnail

Platform

programmers


Description

  • 제한사항
    0 < array의 길이 < 100
    0 ≤ array의 원소 < 1000
  • 입출력 예 설명
    입출력 예 #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입니다.

Solution

class Solution {
    public int solution(int[] array) {
        int[] frequency = new int[1000];
        int maxFrequency = 0;

        // 각 숫자의 빈도를 계산
        for (int num : array) {
            frequency[num]++;
            maxFrequency = Math.max(maxFrequency, frequency[num]);
        }

        // 최빈값이 여러 개 있는지 확인
        int maxValCount = 0;
        int maxVal = -1;
        for (int i = 0; i < frequency.length; i++) {
            if (frequency[i] == maxFrequency) {
                maxValCount++;
                maxVal = i;
                if (maxValCount > 1) {
                    return -1; // 최빈값이 여러 개면 -1 반환
                }
            }
        }

        // 최빈값이 하나만 있으면 그 값을 반환
        return maxVal;
    }
}

Math.max() 과 Math.min()

Math.max(a, b) 는 a 와 b 중에 가장 높은 수를 반환한다.
Math.min(a, b) 는 a 와 b 중에 가장 낮은 수를 반환한다.
인자 a, b 는 같은 Primitive type 끼리만 비교 가능하다.

ex) Math.max(int a, int b)

profile
어제보다 매일 1% 성장하고 있습니다.

0개의 댓글