Programmers

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

winter17 2023. 7. 4. 17:20

https://school.programmers.co.kr/learn/courses/30/lessons/120812

 

프로그래머스

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

programmers.co.kr

풀이 과정

function solution(array) {
    let obj = {} // array 배열을 객체로 만들기
    for (let i = 0; i < array.length; i++){
        const num = array[i]
        if (obj[num]){
            obj[num]++
        }else{
            obj[num] = 1
        }
    }
    // console.log(obj)
    
    let value = [] // 객체에서 value만 뽑기
    for (i in obj){
        value.push(obj[i])
    }
    // console.log(value)
    
    const maxValue = Math.max(...value) // value 중 가장 큰 값 찾기
    // console.log(maxValue)
    
    let result = [] // 가장 큰 value 중 obj의 value값과 동일하면 key를 result에 push
    for (i in obj){
        if (maxValue === obj[i]){
            result.push(i)
        }
    }
    // console.log(result)
    
    if (result.length === 1){ // 길이가 1이면 숫자로 변환 후 반환
        return Number(result[0])
    }else{ // 여러 개면 -1 반환
        return -1
    }
}

배열을 객체로 만드는 방법을 알아야 최빈값을 구하기 수월하다.

코드에 대한 설명은 위의 코드에 주석처리해 두었다.


리뷰

객체 만드는 부분까지 시도했다가 그 이후가 잘 안 풀려서 오늘 다시 시도했는데 

코드를 중복되게 작성한 것 같지만 스스로 풀어냈다는 것에 의의를...!