[LeetCode | Javascript] Majority Element

박기영·2023년 8월 23일

LeetCode

목록 보기
4/41

solution

/**
 * @param {number[]} nums
 * @return {number}
 */
var majorityElement = function(nums) {
    // 배열에서 가장 많이 나온 숫자를 출력해야함.
    const map = new Map();
    
    for(let i = 0; i < nums.length; i++){
        // Map 객체가 가지고 있지 않다면 1로 설정
        if(!map.has(nums[i])){
            map.set(nums[i],1);
            continue;
        }

        // Map 객체가 가지고 있다면 기존 숫자에서 1 증가
        map.set(nums[i], map.get(nums[i]) + 1);
    }

    // 비교 연산을 위해 Map 객체의 초기 최대값을 가지는 key, value 설정
    // 즉, Map 객체 가장 위에 있는 key, value를 설정한 것.
    let maxKey = map.keys().next().value;
    let maxVal = map.values().next().value;

    // Map 객체는 entries()로 뽑아내도 배열이 아니기 때문에 spread operator 사용
    [...map.entries()].forEach((item) => {
        if(maxVal < item[1]){
            maxKey = item[0];
            maxVal = item[1];
        }
    });

    // 최대값이 아닌, 최대값을 가지는 key가 궁금한 것이므로 maxKey 반환
    return maxKey;
};

필자는 Map 객체를 활용하여 진행했다.
가장 많은 개수의 원소를 얻기 위해서는, 각 원소 값이 몇 개가 있는지 알아야하는데
바로 생각나는 것이 바로 key, value를 활용하는 것이었다.

보통은 일반 객체로 해도 충분하다고 생각되지만,
Map 객체가 특정 key를 검색할 때 훨씬 빠르다고 알고 있었기 때문에 Map 객체를 사용하는 것으로 했다.

profile
나를 믿는 사람들을, 실망시키지 않도록

0개의 댓글