개발인생/Altorithm

[알고리즘 기초 100제] 3. 최빈수 구하기

forri 2025. 3. 9. 13:10

✔️문제

- 가장 많이 출현한 수를 출력하시오.
- 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);

  }
}
  • mode 배열
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)