📖이 포스팅은 '파이썬 알고리즘 인터뷰 - 박상길님' 책을 보고 작성되었습니다.
😎문제 :
상위 K번 이상 등장하는 요소를 추출하라
[Counter를 이용한 음수 순 추출]
import collections
import heapq
class Solution:
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
freqs = collections.Counter(nums)
heap = []
for i in freqs:
heapq.heappush(heap, (-freqs[i],i))
topk = list()
for _ in range(k):
topk.append(heapq.heappop(heap)[1])
return topk
[파이썬 다운 방식]
import collections
class Solution:
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
return list(zip(*collections.Counter(nums).most_common(k)))[0]
collections.Counter(nums).most_common(k)
- [(1,3), (2,2)]를 뽑아준다.
- zip( )
- 2개 이상의 시퀀스를 짧은 길이를 기준으로 일대일 대응하는 새로운 튜플 시퀀스를 만드는 역할을 한다.
- * (아스테리스크 - Asterisk)
- unpack을 의미하며 시퀀스를 풀어 헤치는 연산자를 뜻한다. 주로 튜플, 리스트를 언패킹하는 데 사용한다.
- list로 되어 있는 것을 문자열로 바로 보여줄 수 있다.
'자료구조와 알고리즘 > 🥑알고리즘' 카테고리의 다른 글
[알고리즘][그래프] - 1. 섬의 개수 (0) | 2022.03.23 |
---|---|
[알고리즘][비선형 자료구조] - 비선형(Non-Linear) 자료구조 (0) | 2022.03.16 |
[알고리즘][해시 테이블] - 3. 중복 문자 없는 가장 긴 부분 문자열 (0) | 2022.03.09 |
[알고리즘][해시 테이블] - 2. 보석과 돌 (0) | 2022.03.06 |
[알고리즘][해시 테이블] - 1. 해시맵 디자인 (0) | 2022.03.06 |