문제 풀기/JavaScripts

문제 56. 과일 장수(난이도 5)

kagan-draca 2024. 8. 2. 17:18

 

문제를 잘 생각해보면

 

score를 내림차순 정렬한 이후

m개로 묶은 덩어리가 되는 배열에서

배열의 가장 작은 값 * m개의 누적 합을

구하면 되는 문제였다.

 

let sum = 0

누적합을 담을 변수를 만들어주고

 

score.sort((a, b)=> b - a)

score의 요소들을 내림차순 정렬해줬다.

 

이후,

for(let i = 0; i < score.length; i += m)

묶음이 될 수 있는 score의 요소 수 만큼

반복을 진행해준다.

 

for문 안에는

 

let temp = score.slice(i, i + m)

묶음을 만들어준다.

 

if(temp.length == m)

묶음들 중 개수가 m개이면

 

sum += temp[m - 1] * m

묶음 중 가장 작은 값 * m개를

누적합에 더해준다.

 

제출한 코드 : 

 

function solution(k, m, score)
{
    let sum = 0
    score.sort((a, b)=>b - a)
    for(let i = 0; i < score.length; i+= m)
    {
        if(score.slice(i, i + m).length == m)
        sum += score.slice(i, i + m)[m-1] * m
    }
    return sum
}