๐Ÿฅž BE
home

347_Top K Frequent Elements

๋‹ด๋‹น์ž
์™„๋ฃŒ ์—ฌ๋ถ€
Solved
์š”์•ฝ
๋‚ ์งœ
2024/07/19
ํƒœ๊ทธ
์ž๋ฃŒ๊ตฌ์กฐ
๋‚œ์ด๋„
Medium
์ถœ์ฒ˜
LeetCode

์ฝ”๋“œ

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 ๊ฐ’๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ ์–‘์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ด์„œ ์šฐ์„ ์ˆœ์œ„ ํ๊ฐ€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๊ฒŒ ํ–ˆ๋‹ค.