[JavaScript] 과일 장수

ksweeni·2023년 5월 2일

Programmers

목록 보기
7/20

과일 장수

🎱 problem

https://school.programmers.co.kr/learn/courses/30/lessons/135808

🎱 solution

function solution(k, m, score) {
    // m은 사과의 수
    // k는 최대점수
    // 반환값은 최소점수 곱하기 사과개수
    score = score.sort().reverse();
    let s=[];
    for (let i = 0; i < score.length; i+=m) {
        s.push(score.slice(i, i+m))
  }
    s = s.filter((a) => a.length === m);
    s = s.map(a => Math.min(...a)*m).reduce((a,b) => a+b, 0)
    return s;
}

💿 comment

reduce() 함수 이용해 원하는 결과로 도출할 수 있고,
filter() 는 거름망의 역할을 한다. 또한, score의 길이가 1,000,000개까지 될 수 있어서 sort하고 reverse로 두 번 정렬하는 것보다는 score.sort((a, b) => b - a) 로 한 번에 정렬하는 게 더 좋을 것 같다는 코멘트를 받았다. 그리고 score 값에 다시 저장해주지 않아도 sort 함수는 실행하면 그대로 값이 변경된다.

0개의 댓글