본문 바로가기
Language/알고리즘 개념정리

자바 최빈값(Mode) 알고리즘 정리

by wakestand 2021. 5. 30.
반응형

최빈값(Mode) 알고리즘이란

주어진 데이터 중에서

가장 많이 나온(중복된) 값을 말하는데

 

값의 범위가 매우 넓다면

COUNT를 담아두는 방법을 변경해야 겠지만

(Map을 사용한다거나 등..)

특정 범위 안으로만 들어올 경우에는

(5이하, 100이하 등)

 

값의 범위와 동일하게

index 배열을 만든 뒤

 

for 문을 돌리면서 값에 해당하는 내용을

인덱스 배열에서 1씩 올려주고

 

for 문을 돌리면서

해당 인덱스 배열의 최대값을 구하면 되는데

최대값이 곧최빈값이 되므로

최대값을 가져와주면 바로 끝이 난다

 

예제에 사용한 코드는 다음과 같다

 

	public static void main(String[] args) {
		// 최빈값 알고리즘(Mode Algorithm)
		// 주어진 데이터에서 가장 많이 나온(중복된) 값
		int[] arr = {1, 3, 4, 3, 5};
		int answer = 0; // 최빈값
		int[] index = new int[5 + 1]; // 값별 갯수(COUNT) 저장
		int max = Integer.MIN_VALUE;
		
		for(int i = 0; i<arr.length; i++) {
			index[arr[i]]++; // 값별 인덱스에 COUNT 추가
		}
		
		for(int i = 0; i<index.length; i++) {
			if(index[i] > max) { // 최대값 구하기
				max = index[i];
				answer = i;
			}
		}
		
		System.out.println("ANSWER : " + answer + " COUNT : " + max);
	}
반응형

댓글