반응형
포인트
1. 해시를 이용하여 Counter 및 개수를 확인하는 방법
🧶문서는 항상 수정 될 수 있습니다. 비판은 환영합니다.
c++/cpp
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
int numJewelsInStones(string jewels, string stones)
{
unordered_map<char, int> map;
for (auto ele : stones)
{
map[ele] += 1;
}
int cnt = 0;
for (auto ele : jewels)
{
cnt += map[ele];
}
return cnt;
}
};
python
class Solution:
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
return list(zip(*Counter(nums).most_common(k)))[0]
version 2
class Solution:
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
freqs = Counter(nums)
heaps = []
# 힙에 음수로 삽입
for f in freqs:
heapq.heappush(heaps, (-freqs[f], f))
result = []
# k번 만큼 추출, 민 힙 이므로 가장 작은 음수 순으로 추출
for _ in range(k):
result.append(heapq.heappop(heaps)[1])
return result
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘] 원자 소멸 시뮬레이션 (0) | 2021.03.08 |
---|---|
[알고리즘] Longest Substring Without Repeating Characters (0) | 2021.03.08 |
[알고리즘] Top K Frequent Elements (0) | 2021.03.08 |
[알고리즘] 로봇 청소기 (0) | 2021.03.07 |
[알고리즘] 치킨 배달 (0) | 2021.03.07 |
댓글