알고리즘

[1일 1 알고리즘] D+4 - 최빈값 구하기

hyeeoooook 2026. 2. 17. 00:02

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

최빈값 구하기


오늘은 머리가 잘 안돌아갔다...

몸이 이상하게 피곤하고 눈이 자꾸 감기는게 약간은 쉬어줘야하는 타임이 다시 온것같다 ㅠㅠ

사실 추석까지 공부를 계속 무리해서 하다보니 약간 방전된감이 없지않아 있다..

 

하지만 1일 1알고리즘 챌린지를 최대한 지키기 위해서 최대한 풀어보았다..

 

function solution(array) {
    let answer = 0;
    let freq = {};
    let value = 0;
    
    let maxCount = 0;
    let maxValue = 0;
    let countOfMax = 0;
    for(let i = 0 ; i<= array.length-1; i++){
        value = array[i];
        if (freq[value]) {
            freq[value] += 1;
        } else {
            freq[value] = 1;
        }   
    }
    for(let key in freq){
        if(freq[key] > maxCount){
            maxValue = Number(key);
            maxCount = freq[key];
            countOfMax = 1;
        }
        else if(freq[key] === maxCount){
            countOfMax++;
        }
    }
    countOfMax > 1 ? answer = -1 : answer = maxValue;
    return answer;
}

코드를 딱 봐도 굉장히 어영부영 정리가 안된듯한 느낌이 든다.


접근방식

  • 배열 array를 받아서 freq라는 객체에 담는다. 이때 key 값은 숫자, value 값은 횟수가 들어가도록 한다.
  • 다음으로 객체를 순회하기위해 for in 문법을 사용하여 key와 value값을 변수에 담아준다.
  • 마지막으로 삼항연산자를 사용하여 값이 2개 이상일때와 1개일때의 반환되는 값에 차별화를 준다.