본문 바로가기
Programmers/Lv.0

[프로그래머스][Js] Lv.0 - 최빈값 구하기

by pin9___9 2023. 3. 17.
728x90

문제💭


 

나의 풀이👨‍💻

function solution(array) {
    let count = Array(Math.max(...array) + 1).fill(0);
    array.forEach(num => {
        count[num]++;
    })
    let maxCount = Math.max(...count);
    if (count.indexOf(maxCount) === count.lastIndexOf(maxCount)) {
        return count.indexOf(maxCount);
    } else {
        return -1;
    }
}

 


다른 사람의 풀이👨‍🏫

1. 

function solution(array) {
    let m = new Map();
    for (let n of array) m.set(n, (m.get(n) || 0)+1);
    m = [...m].sort((a,b)=>b[1]-a[1]);
    return m.length === 1 || m[0][1] > m[1][1] ? m[0][0] : -1;
}

2. 

const solution = (array) => {
    const counter = array.reduce((acc, cur) => ({
        ...acc,
        [cur]: (acc[cur] || 0) + 1
    }), {})

    const items = Object.keys(counter).map((key) => [
        Number(key), counter[key]
    ]).sort((a, b) => b[1] - a[1])

    if (items[0][1] === items?.[1]?.[1]) {
        return -1
    }

    return items[0][0];
}

 


Reference

  • 프로그래머스
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

728x90

댓글