[프로그래머스] 최빈값(Java)

수경·2022년 12월 14일
0

problem solving

목록 보기
85/174

프로그래머스 - 최빈값

풀이

  1. HashMap에 파라미터로 들어온 array 배열의 값을 HashMap에 저장
    ➡️ hashMap.put(n, hashMap.getOrDefault(n, 0) + 1)
    ➡️ 기존 값이 있으면 0, 아니면 해당 value값에 + 1

  2. value가 가장 큰 값을 max에 저장한 후, hashmap에서 value가 max인 값들의 개수 cnt를 구한 뒤 반환

  3. 만약 cnt가 1이면 최빈값이 유일한 값이므로 result 반환, 그렇지 않으면 -1 반환


코드

import java.util.*;

public class Mode {
	public int solution(int[] array) {
		HashMap<Integer, Integer> hashMap = new HashMap<>();

		for (int n : array) hashMap.put(n, hashMap.getOrDefault(n, 0) + 1);

		int max = Collections.max(hashMap.values());
		int cnt = 0;
		int result = 0;
		for (Map.Entry<Integer, Integer> entry : hashMap.entrySet()) {
			if (entry.getValue() == max) {
				cnt++;
				result = entry.getKey();
			}
		}
		return cnt == 1 ? result : -1;
	}

	public static void main(String[] args) {
		Mode mode = new Mode();
		System.out.println(mode.solution(new int[]{1, 2, 3, 3, 3, 4})); // 3
		System.out.println(mode.solution(new int[]{1, 1, 2, 2}));       // -1
		System.out.println(mode.solution(new int[]{1}));                // 1
	}
}
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글