
😎풀이
nums를 k개씩 잘라 순회
1-1. 모든 문자 빈도 탐색
1-2. 빈도를 기준으로 내림차 순, 동일 빈도 시 값을 기준으로 내림차 순 정렬
1-3. x개의 최빈값을 빈도 * 곱의 형태로 누산
1-4. xSum에 반영
- xSum 반환
function findXSum(nums: number[], k: number, x: number): number[] {
const xSum = []
for(let start = 0; start <= nums.length - k; start++) {
const curr = nums.slice(start, start + k)
const frequent = new Map()
for(const char of curr) {
frequent.set(char, (frequent.get(char) ?? 0) + 1)
}
const freqArr = Array.from(frequent)
const sortedByFreq = freqArr.sort(([aNum, aFreq], [bNum, bFreq]) => {
if(aFreq !== bFreq) return bFreq - aFreq
return bNum - aNum
})
const sum = sortedByFreq.slice(0, x).reduce((acc, [val, freq]) => acc + val * freq, 0)
xSum.push(sum)
}
return xSum
};