코딩테스트 연습/프로그래머스 LV.0

[프로그래머스] Lv.0 최빈값 구하기 - 자바(Java)

5ein 2024. 3. 21. 18:07

문제: 코딩테스트 연습 - 최빈값 구하기 | 프로그래머스 스쿨 (programmers.co.kr)

문제설명

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


제한사항

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

입출력 예

array result
[1, 2, 3, 3, 3, 4] 3
[1, 1, 2, 2] -1
[1] 1

나의 문제 풀이

import java.util.*;
class Solution {
	public int solution(int[] array) {
		int answer = 0;
		int max;
		Arrays.sort(array);
		max = array[array.length - 1];
		
		int[] count = new int[max + 1];
		for (int i = 0; i < array.length; i++) {
        	count[array[i]]++;
		}
		max = count[0];
        
		for (int i = 1; i < count.length; i++) {
        	if (max < count[i]) {
				max = count[i];
				answer = i;
			}else if(max == count[i]) { 
				answer = -1;
			}
		}
		return answer;
	}
}

다른 사람의 문제풀이

import java.util.*;
class Solution {
    public int solution(int[] array) {
        int maxCount = 0;
        int answer = 0;
        Map<Integer, Integer> map = new HashMap<>();
        for(int number : array){
            int count = map.getOrDefault(number, 0) + 1;
            if(count > maxCount){
                maxCount = count;
                answer = number;
            }
            else  if(count == maxCount){
                answer = -1;
            }
            map.put(number, count);
        }
        return answer;
    }
}

느낀점

나도 map을 이용해서 다시한번 풀어봐야겠다!!


문제 출처: 코딩테스트 연습 | 프로그래머스 스쿨 (programmers.co.kr)