JAVASCRIPT/코딩테스트

[프로그래머스] 0단계 - 최빈값 구하기

예글 2024. 1. 17. 15:07

1. 문제 설명

 

2. 답안

function solution(array) {
    // prev: 누적된 결과를 나타내는 객체, curr: 현재 처리 중인 배열 요소
    let obj = array.reduce((prev, curr) => {
        
        // prev 객체에 curr 요소가 이미 존재한다면 1 증가시킴, 없다면 1로 초기화
        prev[curr] = ++prev[curr] || 1;
        
    // 누적된 결과 객체 반환
    return prev;
  }, {}); // 초깃값으로 빈 객체 사용
    
    
    // values 중 제일 큰 값 저장
    let maxValue = Math.max(...Object.values(obj))
    
    // 최빈값이 여러 개일 경우 -1 반환
    if (Object.values(obj).filter(item => item === maxValue).length > 1){
        return -1
    }
    
    // 최빈값 찾기
    let answer = Object.keys(obj).find(item => obj[item] === maxValue)
    
    return Number(answer)
}

 

- 테스트는 다 맞는데 이상하게 답을 제출하면 다 틀려서 뭐지.. 뭐지.. 하다가 최빈"값"이 아니라 최빈값이 "몇 개" 나왔냐를 찾고 있었다.. 이런 바보...

- 그거 빼도 이 문제는 어려웠다 ㅠ 언제쯤 능숙하게 코테를 풀 수 있을까 ㅠ