반응형
최빈값(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);
}
반응형
'Language > 알고리즘 개념정리' 카테고리의 다른 글
자바 병합(Merge) 알고리즘 정리 (0) | 2021.05.30 |
---|---|
자바 이진검색(Binary Search) 알고리즘 정리 (0) | 2021.05.30 |
자바 선택정렬(Selection Sort) 알고리즘 정리 (0) | 2021.05.29 |
자바 순위(Rank) 알고리즘 정리 (0) | 2021.05.29 |
자바 근사값(Near) 알고리즘 정리 (0) | 2021.05.29 |
댓글