[LeetCode] 3318. Find X-Sum of All K-Long Subarrays I

Chobby·2026년 1월 7일

LeetCode

목록 보기
891/1065

😎풀이

  1. numsk개씩 잘라 순회
    1-1. 모든 문자 빈도 탐색
    1-2. 빈도를 기준으로 내림차 순, 동일 빈도 시 값을 기준으로 내림차 순 정렬
    1-3. x개의 최빈값을 빈도 * 곱의 형태로 누산
    1-4. xSum에 반영
  2. 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
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글