최빈값 구하기

Wook·2024년 8월 8일

🧩코딩테스트

목록 보기
1/46
post-thumbnail

문제

  • 정수 배열 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

생각할 점

  • 각 원소가 몇 개 존재하는지 기록해야 함.
  • 기록용 배열(frequency)를 따로 생성하고, array 원소의 값(x)의 출현 빈도를 기록용 배열의 x번째 index에 기록.
  • frequency 배열의 원소 중 최댓값을 구함. 최댓값의 index값이 array 배열의 최빈값.
  • frequency 배열에서 최댓값과 동일한 값을 가지는 원소가 있는지 점검. 혹시 있다면 -1을 return

작성 코드

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

        for (int i = 0; i < array.length; i++) {
            frequency[array[i]]++;

            if (max < frequency[array[i]]) {
                max = frequency[array[i]];
                answer = array[i];
            }
        }

        int temp = 0;
        for (int i = 0; i < frequency.length; i++) {
            if (max == frequency[i]) {
                temp++;
            }
            if (temp > 1) {
                answer = -1;
            }
        }
        return answer;
    }
}
profile
Keep going

0개의 댓글