[Programmers] Lv0 최빈값 구하기 Java

2023. 1. 29. 03:39CS/자료구조 & 알고리즘

728x90

문제 출처

[프로그래머스 코딩 테스트 연습]

https://school.programmers.co.kr/learn/courses/30/lessons/120812

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 풀이

  • 최빈값은 가장 자주 나오는 값이다.
  • 또한 원소가 최대 1000 미만이므로 배열에 맵핑이 가능하다.
  • 가장 큰 값 + 1 만큼 배열의 길이를 만들고 거기에 나오는 ㅊcount를 적었다.
  • 그리고 얻은 countArray에 최댓값 즉 최빈값이 여러개 나온지 확인후 결과 값을 주게 하였다.

 

소스 코드

import java.util.Arrays;

public class Solution {

    public int solution(int[] array) {

        int[] countArray = new int[Arrays.stream(array).max().orElseThrow() + 1];

        for (int i : array)
            countArray[i]++;

        int max = Arrays.stream(countArray).max().orElseThrow();
        int result = 0;

        int count = 0;
        for (int i = 0; i < countArray.length; i++) {
            if (countArray[i] == max) {
                count++;
                result = i;
            }
        }

        return count > 1 ? -1 : result;
    }
}
728x90