Javascript/프로그래머스Lv0

최빈값 구하기

정호나 2024. 6. 7. 18:27

[1,0,1,2,1,0,3 ] -> [0,0,1,1,1,2,3]

 

//1. 앞에서부터 차례대로 원소를 확인하며 갯수를 센다.
//2. 최빈값을 그때그때 기록한다.

function solution(array) {

    let sortedArray = array.sort((a,b) => a-b);//오름차순으로 배열 정렬하기
    var answer = 0;
    let cnt = 0 ;
    let mode = -1; //최빈값이 뭔지, 최빈값은 등장할 수 없는 값(-1),
    let modeRepeatCnt = 0; //최빈값이 될 때 몇번 반복해서 된건지
    let repeatCnt = 0;  //현재 똑같은 숫자가 몇번 등장했는지
    let beforeNumber = -1;   //지금 보고있는 숫자 이전 숫자
    let isDupMode = false;  //최빈값이 중복되었는지

    while (cnt < array.length) {
    if(beforeNumber !== array[cnt]){
        repeatCnt = 1 ;        
    }else {
        repeatCnt++;
    }
        if(repeatCnt === modeRepeatCnt){
            if (mode !== array[cnt]){
                 isDupMode = true;
            }            
        }

        if(repeatCnt > modeRepeatCnt){
            mode = array[cnt];
            modeRepeatCnt = repeatCnt;
            isDupMode = false;
        }

        beforeNumber = array[cnt];
       cnt++;
    }
    if(isDupMode) return -1;
    return mode;
}