[Leetcode] 347. TOP K Frequent Elements

KyungminΒ·2024λ…„ 7μ›” 1일
0

CodingTest_Python

λͺ©λ‘ 보기
10/12

πŸ“ 문제

πŸ“Ž 347. TOP K Frequent Elements

μƒμœ„ k 번 이상 λ“±μž₯ν•˜λŠ” μš”μ†Œλ₯Ό 좜λ ₯

Example

Input : nums = [1,1,1,2,2,3] , k = 2

  • 1이 3번, 2λŠ” 2번 , 3은 1번 λ“±μž₯ν•œλ‹€.
  • k λŠ” 2 μ΄λ―€λ‘œ λΉˆλ„ 수 μˆœμœ„λ‘œ 2λ“±κΉŒμ§€ 배열에 λ‹΄μ•„μ„œ 좜λ ₯ν•˜λ©΄ λœλ‹€.
  • 즉 [1,2] λ₯Ό λ°˜ν™˜ν•œλ‹€.

❌ 처음 μž‘μ„± μ½”λ“œ - μ˜€λ‹΅

def solution(nums, k):
    ans = collections.defaultdict(int)
    result = []
    for char in nums:
        ans[char] += 1

    for char in ans:
        if ans[char] >= k:
            result.append(char)

    return result

풀이 μ˜λ„λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

  • defaultdict λ₯Ό μ‚¬μš©ν•˜μ—¬ ans 에 ([1:3, 2:2, 3:1]) 을 μ €μž₯ν•œλ‹€.
  • 그리고 nums 을 λŒλ©΄μ„œ ans[1] = 3. ans[2] = 2, ans[3] = 1 을 μ €μž₯ν•œλ‹€.
  • λ§ˆμ§€λ§‰μœΌλ‘œ ans 을 λŒλ©΄μ„œ ans 의 각 값이 k 이상이면 result 배열에 λ‹΄λŠ”λ‹€.

ν‹€λ Έλ‹€!!! 근데 μ™œ?

문제λ₯Ό 잘 λͺ» μ΄ν•΄ν–ˆλ‹€... μ£Όμ–΄μ§„ k, 즉 2 이상 λ“±μž₯ν•˜λŠ” 수λ₯Ό 배열에 λ‹΄μ•„ 좜λ ₯ν•˜λ©΄ λ˜λŠ”κ±΄μ§€ μ•Œμ•˜λŠ”λ°, μ•žμ„œ 문제λ₯Ό μ„€λͺ…ν•œ 것과 같이 λ“±μž₯ν•œ μˆœμ„œ(k)λ₯Ό κΈ°μ€€μœΌλ‘œ μƒκ°ν–ˆμ–΄μ•Ό ν–ˆλ‹€.

βœ… μˆ˜μ •λœ μ½”λ“œ - μ •λ‹΅

def solution(nums, k):
    ans = collections.Counter(nums)
    d = []
    result = ans.most_common(k)
    for idx, freq in result:
        d.append(idx)
    return d
  • 파이썬의 Counter λ₯Ό μ‚¬μš©ν•˜μ—¬ ans 에 λΉˆλ„μˆ˜λ₯Ό μ €μž₯ν•œλ‹€.
  • most_common : κ°€μž₯ λΉˆλ²ˆν•˜κ²Œ λ“±μž₯ν•˜λŠ” k개의 μš”μ†Œμ™€ κ·Έ λΉˆλ„μˆ˜λ₯Ό νŠœν”Œ 리슀트둜 λ°˜ν™˜
  • κ·Έλ ‡κ²Œλ˜λ©΄, Counter({1:3, 2:2, 3:1}) 이 μ €μž₯λœλ‹€. 그리고 result μ—λŠ” μƒμœ„ k번 이상 λ“±μž₯ν•˜λŠ” [(1, 3), (2, 2)] 이 λ‹΄κΈ΄λ‹€.
  • for 문으둜 result μ—μ„œ ν•΄λ‹Ή μ›μ†Œ(1,2) λ₯Ό λ°˜ν™˜ν•  배열에 λ‹΄κ³  좜λ ₯ν•œλ‹€.

⭐️ most_common

    def most_common(self, n=None):
        '''List the n most common elements and their counts from the most
        common to the least.  If n is None, then list all element counts.

        >>> Counter('abracadabra').most_common(3)
        [('a', 5), ('b', 2), ('r', 2)]

        '''

μœ„λŠ” most_common 을 눌러 λ“€μ–΄κ°„ μ„€λͺ…이닀. μ„€λͺ…κ³Ό 같이 most_common 에 λ§€κ°œλ³€μˆ˜λ§ŒνΌ λ“±μž₯ν•œ 값듀을 μ €μž₯ν•œλ‹€.
.
.
μ½”λ”© ν…ŒμŠ€νŠΈλŠ” 보톡 idle 을 μ œκ³΅ν•˜μ§€ μ•ŠλŠ”λ‹€. νŒŒμ΄μ¬μ€ λ§Žμ€ 라이브러리λ₯Ό μ œκ³΅ν•˜μ§€λ§Œ idle 이 없을 λ•Œλ„ νŽΈν•˜κ³  μžμ—°μŠ€λŸ½κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ 많이 μ—°μŠ΅ν•˜μž.

profile
Backend Developer

0개의 λŒ“κΈ€