지난 공부기록/알고리즘 풀이

Python - Algorithm #1

hkl22 2024. 6. 7. 18:02

Python Algorithm

LeetCode

229. Majority Element Ⅱ

  • Given an integer array of size n, find all elements that appear more than n/3 times.
  • Constraints:
    • 1 nums.length 5 ⨉ 10⁴
    • -10⁹ nums[i] 10
from collections import Counter

class Solution:
    def majorityElement(self, nums: List[int]) -> List[int]:
        from collections import Counter
        answer = []
        # 1. n / 3을 내림한 숫자 m 구하기
        # 2. nums 리스트의 각 숫자들의 등장 횟수를 집계한 딕셔너리 만들기
        # 3. 딕셔너리를 순회하면서 m보다 많이 등장한 숫자를 answer에 추가하기
        n = len(nums)
        m = math.floor(n / 3)
        nums_counter = Counter(nums)
        for num, cnt in nums_counter.items():
            # cnt가 m보다 크면 answer에 num을 append
            if cnt > m:
                answer.append(num)
		return answer
class Solution:
    def majorityElement(self, nums: List[int]) -> List[int]:
        answer = []
        for i in nums:
            if nums.count(i) > len(nums) / 3:
                answer.append(i)
        answer = set(answer)
        return answer
  • Counter( ) : 주어진 객체의 요소를 키, 요소의 개수를 값으로 가지는 딕셔너리 생성
    • from collections import Counter

https://leetcode.com/problems/majority-element-ii/

'지난 공부기록 > 알고리즘 풀이' 카테고리의 다른 글

Python - Algorithm #6  (0) 2024.06.18
Python - Algorithm #5  (0) 2024.06.17
Python - Algorithm #4  (0) 2024.06.12
Python - Algorithm #3  (0) 2024.06.11
Python - Algorithm #2  (0) 2024.06.10