Lv.1 : 과일장수 [JavaScript]

2024. 11. 10. 17:33Algorithm/프로그래머스

반응형

 

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 


문제 풀이1 => 시간초과

function solution(k, m, score) {
    var answer = 0;
    var sortScore = score.sort((a, b) => b - a);
    
    while(sortScore.length >= m) {
        var splitArr = sortScore.splice(0, m);
        answer += splitArr[m - 1] > k ? k * m : splitArr[m - 1] * m;
    }
    
    return answer;
}

score을 내림차순으로 정렬하여

앞에서부터 m개씩 잘라가면서, m개의 사과 중 최저 점수(splitArr[m-1])과 사과의 최대점수 k를 비교하여 answer에 더해간다.

 

이 풀이로는 테스트 11~15번에서 시간초과가 난다.

문제 풀이2

function solution(k, m, score) {
    var answer = 0;
    var sortScore = score.sort((a, b) => b - a).filter((e, idx) => (idx + 1) % m == 0);
    
    for(var s of sortScore){
        answer += s > k ? k * m : s * m;
    }
    
    return answer;
}

매번 자르고 비교하는 게 시간이 오래 걸리나 싶어서

sortScore에서 m번째 요소가 각 박스에서의 최저점수이기 때문에 filter를 통해 최저점수만 걸러 사용해 주었다.

반응형

'Algorithm > 프로그래머스' 카테고리의 다른 글

Lv.1 : [PCCP 기출문제] 1번 / 붕대 감기  (1) 2025.01.20
Lv.2 : 튜플 [JavaScript]  (0) 2024.11.10
Lv.1 : 모의고사 [JavaScript]  (1) 2024.11.07
Lv.2 : 의상 [JavaScript]  (0) 2024.11.06
Lv.2 : 프로세스 [JavaScript]  (0) 2024.11.03