์ฝ๋
import java.util.HashMap;
import java.util.Map;
import java.util.PriorityQueue;
class Solution {
public int[] topKFrequent(int[] nums, int k) {
Map<Integer, Integer> frequencyMap = new HashMap<>();
for (int num : nums) {
// getOrDefault -> ๊ฐ ์ถ์ถ, ํค๊ฐ ์๋ค๋ฉด default๋ก 0๊ฐ ๋ฆฌํด
frequencyMap.put(num, frequencyMap.getOrDefault(num, 0) + 1);
}
// ์ฐ์ ์์ ํ -> ๋น๋์ ๋ฐ๋ผ ์ซ์ ์ ๋ ฌ
// ์๋ฃํ์ Map.Entry๋ก ํ์ฉ
PriorityQueue<Map.Entry<Integer, Integer>> pq = new PriorityQueue<>(
(a, b) -> b.getValue() - a.getValue()
);
pq.addAll(frequencyMap.entrySet());
// ์์ k๊ฐ ์ถ์ถ
int[] result = new int[k];
for (int i = 0; i < k; i++) {
result[i] = pq.poll().getKey();
}
return result;
}
}
Java
๋ณต์ฌ
์์ฃผ ์ฐ์ด๊ฒ ๋ HashMap ๋ฉ์๋ : getOrDefault(key, value) โ ๊ฐ ์ถ์ถ, ํค๊ฐ ์๋ค๋ฉด default๋ก 0๊ฐ ๋ฆฌํด
๋ฌธ์ ํด๊ฒฐ ์์ด๋์ด
์ฐ์ ์์ ํ๋ฅผ ์ ์ธํด์, ๋ฌธ์์ ๋น๋ ๊ฐ์ ์ ์ฅํ ํด์๋งต์ ๋ฃ์ด ์์ k๊ฐ๋ฅผ ์ถ์ถํด๋ธ๋ค.
ํ์๋ ์ฐ์ต๊ฒธ ๊ฐ๋จํ ๋๋ค ํํ์์ ์ฌ์ฉํ๋๋ฐ, (a, b) -> b.getValue() - a.getValue() ๋ก, ์ํธ๋ฆฌ b ๊ฐ์ด ์ํธ๋ฆฌ a ๊ฐ๋ณด๋ค ํฐ ๊ฒฝ์ฐ ์์๋ฅผ ๋ฐํํด์ ์ฐ์ ์์ ํ๊ฐ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๊ฒ ํ๋ค.