일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 로그인
- StyleSheet
- 2차원배열
- 반복문
- 코딩테스트
- Linux
- gradle
- programmers
- css
- codingtest
- Spring boot
- springSecurity
- 시큐리티 로그아웃
- html
- 프로그래머스
- 리눅스
- input태그
- 시큐리티 로그인
- 싱글톤
- security
- 시큐리티
- javascript
- 소스트리
- sql
- 시큐리티로그인
- java
- 목록
- 스프링 부트
- JAVA11
- springboot
Archives
- Today
- Total
JAVAIARY
최빈값 알고리즘 본문
* 인덱스(0점~8점)의 개수(COUNT)의 최대값(MAX)
핵심: 점수를 인덱스로 보고 인덱스(점수)가 같을 때 마다 인덱스에 1을 더해준다.
기본 선언
int[] scores = {1,2, 3, 5, 4, 3, 3 ,8, 3, 3,7}; // 0~8까지만 들어온다고 가정
int mode = 0; // 최빈값이 담길 그릇
int[] indexes = new int[scores.length+1]; // 0~8점까지: 점수의 인덱스의 카운터
// 0부터 시작하기 때문에 +1 해줌
int max = Integer.MIN_VALUE; // 정수 중 가장 작은 수로 초기화
최빈값 알고리즘
- 기본 선언을 가지고 답을 보기 전에 미리 짜본 코드
for(int i =0; i < scores.length; i++){
int j = scores[i];
indexes[j] += 1;
}
for(int i = 0; i < indexes.length; i++){
if (indexes[i] > max) {
max = indexes[i];
mode = i;
}
}
- 풀이
for (int i = 0; i < scores.length; i++) {
indexes[scores[i]]++; //COUNT
}
for (int i = 0; i < indexes.length; i++) {
if (indexes[i] > max) {
max = indexes[i]; // MAX
mode = i; // MODE
}
}
- 같은 로직이지만 풀이가 훨씬 코드가 짧고 간결하다.
출력
//1 빈도수를 max로 출력
System.out.println("최빈값 : " + mode + ", 빈도 수 : " + max);
//2 빈도수를 indexes[mode]로 출력
System.out.println("최빈값 : " + mode + ", 빈도 수 : " + indexes[mode]);
//3 idexces[] 배열 확인
System.out.println(Arrays.toString(indexes));
'selfEdu > concept' 카테고리의 다른 글
next() 와 nextLine() (0) | 2022.10.10 |
---|