[프로그래머스 | Javascript] 코딩테스트 입문 - 최빈값 구하기

박기영·2022년 10월 23일
2

프로그래머스

목록 보기
58/126

solution

function solution(array) {
    let map = new Map();
    
    // Map 객체 초기화
    for(let i = 0; i <= Math.max(...array); i++){
        map.set(i, 0);    
    }
    
    // array 배열의 원소값과 일치하는 Map 객체의 key를 증가시킨다
    for(let i = 0; i < array.length; i++){
        map.set(array[i], map.get(array[i]) + 1);
    }
    
    // Map 객체의 value만 모아서 배열로 만든다
    let arr = Array.from(map.values());
    
    // 최대값 산출
    let max = Math.max(...arr);
    
    // 최대값이 하나만 있다면 max, 여러 개 중복된다면 -1 출력
    if(arr.indexOf(max) !== arr.lastIndexOf(max)){
        return -1;
    } else {
        return arr.indexOf(max);
    }
}

예전에 최빈값 문제를 풀 때 사용했던 Map 객체를 활용해서 풀어봤다.
사실 그 때는 최빈값을 풀 때 Map 객체가 가장 편하다 라는 말을 듣고 그냥 썼었는데,
실행 시간을 보니 생각보다 긴 시간이 걸려서 놀랐다.

다른 분들 풀이를 보니, Map 객체를 사용하신 분들도 많이 보이기 때문에
접근법은 문제가 없다고 판단한다.

profile
나를 믿는 사람들을, 실망시키지 않도록

0개의 댓글