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

김유원·2023년 12월 28일
0

📝23.12.28

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

문제 설명

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.

내가 작성한 풀이

#include <string>
#include <vector>

using namespace std;

int solution(vector<int> array) {
    int amount[1001] = {0};
    
    for(int i = 0; i < array.size(); i++) {
        int num = array.at(i);
        
        amount[num]++;
    }
    
    int answer = 0;
    int max = 0;
    for(int i = 0; i < 1001; i++) {
        if(amount[i] > max) {
            max = amount[i];
            answer = i;
        } else if(amount[i] == max) {
            answer = -1;
        }
    }
    
    return answer;
}

다른 사람의 unordered map을 이용한 풀이

#include <string>
#include <vector>
#include <unordered_map>
using namespace std;

int solution(vector<int> array) {
    int answer = 0;
    int maxV = 0;

    unordered_map<int,int> um;
    for(const auto v : array)
    {
        um[v]++;
    }

    for(const auto& v : um)
    {
        if(v.second > maxV)
        {
            maxV = v.second;
            answer = v.first;
        }
        else if(v.second == maxV)
        {
            answer = -1;
        }
    }

    return answer;
}
    

unordered_map을 이용하면 키와 값을 바로 저장할 수 있어 범위 오류가 나지 않는 장점이 있다. 다음엔 해당 방법을 참고해야겠다.

profile
개발 공부 블로그

0개의 댓글

관련 채용 정보