본문 바로가기
Algorithm/Programmers

[프로그래머스 JS] 프로그래머스 최빈값 구하기

by 그랴 2022. 11. 12.
더보기
  • 최빈값 구하기
문제 설명

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.


제한사항
  • 0 < array의 길이 < 100
  • 0 ≤ array의 원소 < 1000

입출력 예arrayresult
[1, 2, 3, 3, 3, 4] 3
[1, 1, 2, 2] -1
[1] 1

입출력 예 설명

입출력 예 #1

  • [1, 2, 3, 3, 3, 4]에서 1은 1개 2는 1개 3은 3개 4는 1개로 최빈값은 3입니다.

입출력 예 #2

  • [1, 1, 2, 2]에서 1은 2개 2는 2개로 최빈값이 1, 2입니다. 최빈값이 여러 개이므로 -1을 return 합니다.

입출력 예 #3

  • [1]에는 1만 있으므로 최빈값은 1입니다.

 

계속 틀렸다고 나오다가,,, 여러번 코드 다시 처음부터 치니까 풀렸다. 알고리즘은 처음 알고리즘 그대로 했는데 아무래도 코드 작성 시 실수가 있었나보다...

function solution(array) {
    var answer = 0;
    
    let list = new Set(array);
    list = Array.from(list);
    
    let countList = [];
    list.map(e=>{
        countList.push([e,0]);
    })
    
    console.log(countList);
    
    for (let i =0; i < array.length; i++){
        for (let j=0; j<countList.length; j++){
            if (array[i] === countList[j][0]){
                countList[j][1] += 1;
            }
        }
    }
    

    
    countList.sort(function(a,b) {
        return b[1] - a[1];
    })

    
    if (countList.length === 1){
        answer = countList[0][0];
    } else {
        if (countList[0][1] === countList[1][1]){
            answer = -1;
        } else {
            answer = countList[0][0];
        }
    }
    return answer;
}