포스트

Majority Element

LeetCode 169. Majority Element

원문

Given an array nums of size n, return the majority element.

The majority element is the element that appears more than [n / 2] times. You may assume that the majority element always exists in the array.

풀이

Python

  1. collections 모듈의 CounterCounter.most_common() 메서드를 사용한다.
  2. 딕셔너리와 lambda를 사용한 정렬을 함께 사용한다.

코드

1
2
3
4
5
6
7
from collections import Counter


class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        num_cnt = Counter(nums)
        return num_cnt.most_common(1)[0][0]

딕셔너리를 사용하는 경우?

리스트를 순회하며 숫자가 나타난 횟수를 저장하고, 정렬할 때에는 sorted 함수를 사용한다.

1
2
3
4
5
6
7
8
9
10
class Solution:
    def majorityElement(self, nums: list[int]) -> int:
        temp = dict()
        for num in nums:
            if num not in temp:
                temp[num] = 1
            else:
                temp[num] += 1
        result = sorted(temp.items(), key=lambda x: x[1], reverse=True)
        return result[0][0]

Java

n / 2번 이상 나타나는 원소를 반환하면 되기 때문에 nums를 정렬하고, nums의 중간에 위치한 원소를 반환한다.

코드

1
2
3
4
5
6
class Solution {
    public int majorityElement(int[] nums) {
        Arrays.sort(nums);
        return nums[nums.length / 2];
    }
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.