✔️문제
- 가장 많이 출현한 수를 출력하시오.
- 1 2 2 3 1 4 2 2 4 3 5 3 2
- 정답: 2 (5회)
📍정답
package _03_mode;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//입력값 받기
Scanner scan = new Scanner(System.in);
int[] inputNum = new int[10];
for(int i =0; i<inputNum.length;i++) {
inputNum[i] = scan.nextInt();
}
//최빈수 구하기
int[] mode = new int[10];
//index -> 출현한수
//index값 -> index가 몇번나왔는지 저장하는 용도
//"mode[3] = 5, => 3번 숫자가 5번 출현했다"
//inputNum -> 1 2 2 3 1 4 2 2 4 3
for(int i=0;i<10;i++) {
mode[inputNum[i]]++; //★숫자 나올때마다 ++
}
//mode[1] == 2
//mode[2] == 4
//mode[3] == 2
//mode[4] == 2
//출력
int modeNum = 0; //최빈수
int modeCnt = 0; //최빈수가 나온횟수
for(int i =0;i<10;i++) {
if(modeCnt < mode[i]) { //★★더 많이 등장한 숫자를 발견하면 교체
modeCnt = mode[i]; //등장 횟수 업데이트
modeNum = i; //최빈수 업데이트
}
}
System.out.print("최빈수는:"+modeNum+" cnt:" + modeCnt);
}
}
| i |
mode[i] |
modeCnt |
modeNum |
조건 충족 |
| 0 |
0 |
0 |
0 |
❌ (mode[i] <= modeCnt) |
| 1 |
2 |
0 → 2 |
0 → 1 |
✅ (최빈수 갱신) |
| 2 |
4 |
2 → 4 |
1 → 2 |
✅ (최빈수 갱신) |
| 3 |
2 |
4 |
2 |
❌ (mode[i] <= modeCnt) |
| 4 |
2 |
4 |
2 |
❌ (mode[i] <= modeCnt) |
| 5~9 |
0 |
4 |
2 |
❌ (mode[i] <= modeCnt) |