728x90
[문제]
[풀이코드]
function solution(k, m, score) {
var answer = 0;
score = score.sort((a,b) => b - a)
for(let i = 1; i <= score.length / m; i++)
{
answer += (score[i*m - 1] * m ) ;
}
return answer;
}
[해설]
문제에서 물어보는 것은 사과에 들어있는 박스를 m개로 나눴을 때, 최저가격 * m개가 총합이 제일 높은 결과 값을 가져오는 것이 목표이다.
그래서 우리는 우선 사과박스를 정렬해주어야한다. 내림차순으로 정렬해주어야 최대값들이 들어있는 사과부터, 최소값으로 나눠지기 때문에 내림차순으로 정렬을 해주고, 해당하는 사과를 m개로 나눠줘야하기 때문에, score.length / m 만큼 나눠준다. 이때 i 는 1로 잡아줬는데 왜냐하면 최소 1번 만큼은 돌아야하기 때문에 1 <= score.length / m 으로 반복문을 만들어 주었다. 그리고 answer에 정렬한 값을 넣어주면되는데 m번째 사과를 넣어야하기 때문에 i * m 을 해주는데 배열은 0부터 시작하기때문에 해당하는 결과 값에 - 1을 해주고 그 값에 최대 들어가는 사과 m 만큼을 곱해주면 해당하는 값을 넣을 수 있다.
'코딩 > 코딩테스트' 카테고리의 다른 글
[프로그래머스/JS] 덧칠하기 (0) | 2024.06.21 |
---|---|
[프로그래머스/JS] 소수 만들기 (0) | 2024.06.20 |
[프로그래머스/JS] 카드뭉치 (0) | 2024.06.17 |
[프로그래머스/JS] 2016년 (0) | 2024.06.13 |
[프로그래머스/JS] 명예의 전당(1) (0) | 2024.06.13 |