
๊ณผ์ผ ์ฅ์๊ฐ ์ฌ๊ณผ ์์๋ฅผ ํฌ์ฅํ๊ณ ์์ต๋๋ค. ์ฌ๊ณผ๋ ์ํ์ ๋ฐ๋ผ 1์ ๋ถํฐ k์ ๊น์ง์ ์ ์๋ก ๋ถ๋ฅํ๋ฉฐ, k์ ์ด ์ต์ํ์ ์ฌ๊ณผ์ด๊ณ 1์ ์ด ์ตํํ์ ์ฌ๊ณผ์ ๋๋ค. ์ฌ๊ณผ ํ ์์์ ๊ฐ๊ฒฉ์ ๋ค์๊ณผ ๊ฐ์ด ๊ฒฐ์ ๋ฉ๋๋ค.
m๊ฐ์ฉ ๋ด์ ํฌ์ฅํฉ๋๋ค.p (1 โค p โค k)์ ์ธ ๊ฒฝ์ฐ, ์ฌ๊ณผ ํ ์์์ ๊ฐ๊ฒฉ์ p * m ์
๋๋ค.๊ณผ์ผ ์ฅ์๊ฐ ๊ฐ๋ฅํ ๋ง์ ์ฌ๊ณผ๋ฅผ ํ์์ ๋, ์ป์ ์ ์๋ ์ต๋ ์ด์ต์ ๊ณ์ฐํ๊ณ ์ ํฉ๋๋ค.(์ฌ๊ณผ๋ ์์ ๋จ์๋ก๋ง ํ๋งคํ๋ฉฐ, ๋จ๋ ์ฌ๊ณผ๋ ๋ฒ๋ฆฝ๋๋ค)
์๋ฅผ ๋ค์ด, k = 3, m = 4, ์ฌ๊ณผ 7๊ฐ์ ์ ์๊ฐ [1, 2, 3, 1, 2, 3, 1]์ด๋ผ๋ฉด, ๋ค์๊ณผ ๊ฐ์ด [2, 3, 2, 3]์ผ๋ก ๊ตฌ์ฑ๋ ์ฌ๊ณผ ์์ 1๊ฐ๋ฅผ ๋ง๋ค์ด ํ๋งคํ์ฌ ์ต๋ ์ด์ต์ ์ป์ ์ ์์ต๋๋ค.
์ฌ๊ณผ์ ์ต๋ ์ ์ k, ํ ์์์ ๋ค์ด๊ฐ๋ ์ฌ๊ณผ์ ์ m, ์ฌ๊ณผ๋ค์ ์ ์ score๊ฐ ์ฃผ์ด์ก์ ๋, ๊ณผ์ผ ์ฅ์๊ฐ ์ป์ ์ ์๋ ์ต๋ ์ด์ต์ returnํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
k โค 9m โค 10score์ ๊ธธ์ด โค 1,000,000score[i] โค k| k | m | score | result | 
|---|---|---|---|
| 3 | 4 | [1, 2, 3, 1, 2, 3, 1] | 8 | 
| 4 | 3 | [4, 1, 2, 2, 4, 4, 4, 4, 1, 2, 4, 2] | 33 | 
์ ์ถ๋ ฅ ์ #1
์ ์ถ๋ ฅ ์ #2
| ์ฌ๊ณผ ์์ | ๊ฐ๊ฒฉ | 
|---|---|
| [1, 1, 2] | 1 x 3 = 3 | 
| [2, 2, 2] | 2 x 3 = 6 | 
| [4, 4, 4] | 4 x 3 = 12 | 
| [4, 4, 4] | 4 x 3 = 12 | 
๋ฐ๋ผ์ (1 x 3 x 1) + (2 x 3 x 1) + (4 x 3 x 2) = 33์ returnํฉ๋๋ค.
function solution(k, m, score) {
    // ์ค๋ฆ์ฐจ ์ ์ ๋ ฌ
    score = score.sort((a,b) => a-b)
    const box = []
    const len = score.length
    // ๋ฐ์ค๋งํผ ๋ฐ๋ณต
    for(let i = 0 ; i < Math.floor(len/m) ; i ++) {
        const curBox = []
        // ๋จ์ ์ฌ๊ณผ ์ ์๋ค ์ค ์ต๊ณ ์ ์ผ๋ก m๊ฐ ๋ด์
        for(let j = 0 ; j < m ; j ++) {
            curBox.push(score.pop())   
        }
        // ๋ฐ์ค์ ์ด๋ฒ ๋ฐ์ค์ ๊ณผ์ผ์ ๋ด์
        box.push(curBox)
    }
    // ์ต์  ์ฌ๊ณผ ์ ์ * ํ ์์์ ๋ด๊ธด ์ฌ๊ณผ ๊ฐ์์ ํฉ
    return box.map(a => Math.min(...a)*m).reduce((a,b) => a+b, 0)
}