< 문제 간단설명 >
단어들이 들어있는 배열 words 배열과 정수인 k가 들어온다. words 배열에서 가장 많이 나온 단어들을 순서대로 k개만 반환한다. 이 때, 사전식으로 정렬하여 반환한다.
/**
* @param {string[]} words
* @param {number} k
* @return {string[]}
*/
var topKFrequent = function(words, k) {
const customSort = (a, b) => {
let [stringA, countA] = a;
let [stringB, countB] = b;
if(countA === countB) {
// 사전식으로 했을 때 stringA가 stringB 앞에 올 경우 음수를 반환하고,
// 같다면 0,
// 뒤에 올 경우엔 양수를 반환한다.
return stringA.localeCompare(stringB);
}
else {
// 양수면 자리를 바꾸고, 아니면 바꾸지 않는다.
return countB - countA;
}
};
let wordCountMap = new Map();
words.forEach((word) => {
wordCountMap.set(word, wordCountMap.get(word) + 1 || 1);
});
let arr = Array.from(wordCountMap).sort((a, b) => customSort(a, b));
arr = arr.map((el) => el[0]).splice(0, k);
return arr;
};
'PS > LeetCode' 카테고리의 다른 글
LeetCode / Simulation / 54번 / Spiral Matrix / JS (0) | 2023.04.18 |
---|---|
LeetCode / Implementation / 202번 / Happy Number / JS (0) | 2023.04.18 |
LeetCode / Heap / 1046번 / Last Stone Weight / JS (0) | 2023.04.18 |
LeetCode / Stack / 394번 / Decode String / JS (0) | 2023.04.18 |