문제 : https://leetcode.com/problems/majority-element/?envType=daily-question&envId=2024-02-12

  • 숫자 리스트가 주어지면 n/2 번 초과로 등장하는 숫자를 반환하는 태스크

코드 :

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        thresh = len(nums) // 2
        num_count = collections.Counter(nums)
        for num, freq in num_count.items():
            if freq > thresh:
                return num
  • 문제에서 지정했듯이 threshold를 정해주고, collections의 Counter를 사용해 각 숫자의 빈도수를 얻었다
  • for loop을 돌면서 빈도수가 threshold보다 높다면 해당 숫자를 반환하도록 했다

 

고민 :

  • 만약 majority element가 2 개 이상이라면 어떻게 처리할까 고민했지만 discussion을 봐도 언급이 안 되어있는 거 같아 일단 제출해봤다. 위의 코드가 통과가 된 것을 보면 "You may assume that the majority element always exists"라는 부분이 majority element가 절대 2 개 이상이 되지 않는다는 것으로 해석해도 무방할 것 같다.